복붙노트

[HADOOP] 시퀀스 파일로 저장된 하이브 테이블에 텍스트 파일을로드하는 방법

HADOOP

시퀀스 파일로 저장된 하이브 테이블에 텍스트 파일을로드하는 방법

시퀀스 파일로 하이브 테이블을 저장했습니다.

이 테이블에 텍스트 파일을로드해야합니다. 이 테이블에 데이터를 어떻게로드합니까?

해결법

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

    1.텍스트 파일 하이브 테이블에 텍스트 파일을로드 한 다음이 테이블의 데이터를 시퀀스 파일에 삽입 할 수 있습니다.

    텍스트 파일 하이브 테이블에 텍스트 파일을로드 한 다음이 테이블의 데이터를 시퀀스 파일에 삽입 할 수 있습니다.

    탭으로 구분 된 파일로 시작하십시오.

    % cat /tmp/input.txt
    a       b
    a2      b2
    

    시퀀스 파일 만들기

    hive> create table test_sq(k string, v string) stored as sequencefile;
    

    적재하려고 노력하십시오. 예상대로이 작업은 실패합니다.

    hive> load data local inpath '/tmp/input.txt' into table test_sq;
    

    그러나이 표와 함께 :

    hive> create table test_t(k string, v string) row format delimited fields terminated by '\t' stored as textfile;
    

    로드가 잘 작동합니다.

    hive> load data local inpath '/tmp/input.txt' into table test_t;
    OK
    hive> select * from test_t;
    OK
    a       b
    a2      b2
    

    이제 텍스트 테이블에서 시퀀스 테이블로로드 :

    insert into table test_sq select * from test_t;
    

    덮어 쓰기로로드 / 삽입을 수행하여 모두를 대체 할 수도 있습니다.

  2. ==============================

    2.시퀀스 파일로 저장된 테이블을 직접 생성하여 텍스트를 삽입 할 수는 없습니다. 당신은 이것을해야합니다 :

    시퀀스 파일로 저장된 테이블을 직접 생성하여 텍스트를 삽입 할 수는 없습니다. 당신은 이것을해야합니다 :

    예:

    CREATE TABLE test_txt(field1 int, field2 string)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
    
    LOAD DATA INPATH '/path/to/file.tsv' INTO TABLE test_txt;
    
    CREATE TABLE test STORED AS SEQUENCEFILE
    AS SELECT * FROM test_txt;
    
    DROP TABLE test_txt;
    
  3. from https://stackoverflow.com/questions/14064193/how-to-load-a-text-file-into-a-hive-table-stored-as-sequence-files by cc-by-sa and MIT license