복붙노트

[HADOOP] 하이브 테이블에 데이터 삽입

HADOOP

하이브 테이블에 데이터 삽입

나는 하이브를 처음 사용합니다. 나는 성공적으로 단일 노드 hadoop 클러스터를 개발 목적으로 설정했으며 그 위에 하이브와 돼지를 설치했다.

하이브에 더미 테이블을 만들었습니다.

create table foo (id int, name string);

자,이 테이블에 데이터를 삽입하고 싶습니다. 한 번에 SQL 레코드 하나만큼 데이터를 추가 할 수 있습니까? 친절하게도 다음과 같은 유사한 명령으로 나를 도우십시오.

insert into foo (id, name) VALUES (12,"xyz);

또한 형식으로 데이터가 들어있는 csv 파일이 있습니다.

1,name1
2,name2
..
..

..


1000,name1000

이 데이터를 더미 테이블에로드하려면 어떻게해야합니까?

해결법

  1. ==============================

    1.최선의 방법은 다음과 같습니다. a) HDFS로 데이터 복사 (아직없는 경우) b) 이렇게 CSV를 통해 외부 테이블을 만듭니다.

    최선의 방법은 다음과 같습니다. a) HDFS로 데이터 복사 (아직없는 경우) b) 이렇게 CSV를 통해 외부 테이블을 만듭니다.

    CREATE EXTERNAL TABLE TableName (id int, name string)
    ROW FORMAT DELIMITED   
    FIELDS TERMINATED BY ',' 
    LINES TERMINATED BY '\n'
    STORED AS TEXTFILE
    LOCATION 'place in HDFS';
    

    c) QueryName을 사용하여 TableName을 이미 시작할 수 있습니다. d) 다른 하이브 테이블에 데이터를 삽입하려는 경우 :

    insert overwrite table finalTable select * from table name;
    
  2. ==============================

    2.터미널에서 한 번에 하나의 레코드를 삽입하는 직접적인 방법은 없지만 다음은 테스트 할 때 일반적으로 사용하는 간단하고 간단한 해결 방법입니다.

    터미널에서 한 번에 하나의 레코드를 삽입하는 직접적인 방법은 없지만 다음은 테스트 할 때 일반적으로 사용하는 간단하고 간단한 해결 방법입니다.

    t는 적어도 하나의 레코드가있는 테이블이라고 가정합니다. 어떤 열의 유형이나 개수가 중요하지 않습니다.

    INSERT INTO TABLE foo
    SELECT '12', 'xyz'
    FROM t
    LIMIT 1;
    
  3. ==============================

    3.Hive는 분명히 Hive 0.14부터 시작하는 INSERT ... VALUES를 지원합니다.

    Hive는 분명히 Hive 0.14부터 시작하는 INSERT ... VALUES를 지원합니다.

    'SQL에서 테이블에 삽입'섹션 : https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML을 참조하십시오.

  4. ==============================

    4.hdfs에 하나의 경로를두고 하이브에 다음과 같이 쿼리를 작성할 수있는 하나의 텍스트 파일 또는 로그 파일에 삽입 한 데이터

    hdfs에 하나의 경로를두고 하이브에 다음과 같이 쿼리를 작성할 수있는 하나의 텍스트 파일 또는 로그 파일에 삽입 한 데이터

      hive>load data inpath<<specify inputpath>> into table <<tablename>>;
    

    예:

    hive>create table foo (id int, name string)
    row format delimited
    fields terminated by '\t' or '|'or ','
    stored as text file;
    table created..
        DATA INSERTION::
        hive>load data inpath '/home/hive/foodata.log' into table foo;
    
  5. ==============================

    5.ad-hoc 값 (12, "xyz")을 삽입하려면 다음을 수행하십시오.

    ad-hoc 값 (12, "xyz")을 삽입하려면 다음을 수행하십시오.

    insert into table foo select * from (select 12,"xyz")a;
    
  6. ==============================

    6.그것은 하이브의 한계입니다.

    그것은 하이브의 한계입니다.

    1. 삽입 후 데이터를 업데이트 할 수 없습니다.

    2. "테이블 값에 삽입 ..."문이 없습니다.

    3. 대량로드를 사용하여 데이터를로드 할 수 있습니다.

    4. "delete from"명령이 없습니다.

    5. 대량 삭제 만 수행 할 수 있습니다.

    하지만 하이브 콘솔의 레코드를 statck에서 선택하는 것보다 여전히 삽입하고 싶습니다. 이것을 참조하십시오

  7. ==============================

    7.이것을 시도해 볼 수 있습니다. CSV 파일에서 하이브 스크립트를 생성하는 도구를 개발했습니다. 다음은 파일 생성 방법에 대한 몇 가지 예입니다. 도구 - https://sourceforge.net/projects/csvtohive/?source=directory

    이것을 시도해 볼 수 있습니다. CSV 파일에서 하이브 스크립트를 생성하는 도구를 개발했습니다. 다음은 파일 생성 방법에 대한 몇 가지 예입니다. 도구 - https://sourceforge.net/projects/csvtohive/?source=directory

  8. ==============================

    8.버전 하이브 0.14에서 지원됩니다.

    버전 하이브 0.14에서 지원됩니다.

    ( '생산', '태국', 10,99202, '노스 캐롤라이나', '미국', 20) VALUES ( '생산', '태국', 10,99202, '10.

  9. ==============================

    9.다음 코드 줄을 사용하여 기존 테이블에 값을 삽입 할 수 있습니다. 여기 테이블은 두 개의 열이있는 db_name.table_name이고 'All', 'done'을 테이블의 행으로 삽입합니다.

    다음 코드 줄을 사용하여 기존 테이블에 값을 삽입 할 수 있습니다. 여기 테이블은 두 개의 열이있는 db_name.table_name이고 'All', 'done'을 테이블의 행으로 삽입합니다.

    insert into table db_name.table_name
    select 'ALL','Done';
    

    희망이 도움이되었다.

  10. ==============================

    10.Hadoop 파일 시스템은 기존 파일에 데이터를 추가하는 것을 지원하지 않습니다. 하지만 CSV 파일을 HDFS로로드하고 Hive에이를 외부 테이블로 처리하도록 지시 할 수 있습니다.

    Hadoop 파일 시스템은 기존 파일에 데이터를 추가하는 것을 지원하지 않습니다. 하지만 CSV 파일을 HDFS로로드하고 Hive에이를 외부 테이블로 처리하도록 지시 할 수 있습니다.

  11. ==============================

    11.이것을 사용하십시오 -

    이것을 사용하십시오 -

    create table dummy_table_name as select * from source_table_name;
    

    그러면 source_table_name에서 사용 가능한 기존 데이터가있는 새 테이블이 작성됩니다.

  12. from https://stackoverflow.com/questions/11053567/inserting-data-into-hive-table by cc-by-sa and MIT license