복붙노트

[HADOOP] 원본 파일을 제거하지 않고 HDFS에서 하이브로 데이터를로드하는 방법?

HADOOP

원본 파일을 제거하지 않고 HDFS에서 하이브로 데이터를로드하는 방법?

HDFS에서 하이브로 데이터를로드 할 때

LOAD DATA INPATH 'hdfs_file' INTO TABLE tablename;

명령을 사용하면 hdfs_file을 hive / warehouse dir로 이동하는 것처럼 보입니다. 파일을 이동하여 다른 프로세스에서 사용하는 대신 복사하는 것이 가능합니까 (어떻게?)?

해결법

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

    1.귀하의 질문에서 나는 당신이 이미 hdfs에 귀하의 데이터를 가지고 있다고 가정합니다. 따라서 LOAD DATA는 파일을 기본 하이브 위치 / user / hive / warehouse로 이동시킬 필요가 없습니다. 파일을 제자리에두고 하이브 메타 스토어에 테이블 정의를 작성하는 externalkeyword를 사용하여 테이블을 간단하게 정의 할 수 있습니다. 여길 봐: 테이블 DDL 생성 예 :

    귀하의 질문에서 나는 당신이 이미 hdfs에 귀하의 데이터를 가지고 있다고 가정합니다. 따라서 LOAD DATA는 파일을 기본 하이브 위치 / user / hive / warehouse로 이동시킬 필요가 없습니다. 파일을 제자리에두고 하이브 메타 스토어에 테이블 정의를 작성하는 externalkeyword를 사용하여 테이블을 간단하게 정의 할 수 있습니다. 여길 봐: 테이블 DDL 생성 예 :

    create external table table_name (
      id int,
      myfields string
    )
    location '/my/location/in/hdfs';
    

    사용하는 형식이 기본값과 다를 수 있습니다 (주석의 JigneshRawal에서 언급 한대로). 예를 들어 Sqoop을 사용할 때와 같이 자신의 구분 기호를 사용할 수 있습니다.

    row format delimited fields terminated by ','
    
  2. ==============================

    2.나는 EXTERNAL TABLE과 LOCATION을 함께 사용하면 Hive가 테이블을 생성하고 처음에는 데이터가 나타나지 않습니다 (데이터 위치가 Hive 'LOCATION'과 다른 경우).

    나는 EXTERNAL TABLE과 LOCATION을 함께 사용하면 Hive가 테이블을 생성하고 처음에는 데이터가 나타나지 않습니다 (데이터 위치가 Hive 'LOCATION'과 다른 경우).

    'LOAD DATA INPATH'명령을 사용하면 데이터가 하이브 테이블을 생성하는 동안 지정한 위치로 데이터 위치에서 (복사 대신) 이동됩니다.

    하이브 테이블을 만들 때 위치 정보가 제공되지 않으면 내부 하이브웨어 하우스 위치가 사용되며 원본 데이터 위치에서 내부 하이브 데이터웨어 하우스 위치 (예 : / user / hive / warehouse /)로 데이터가 이동합니다.

  3. ==============================

    3.데이터를 기존 소스 위치에서 하이브 데이터웨어 하우스 위치로 이동하지 않는 'LOAD DATA'대신 사용할 수 있습니다.

    데이터를 기존 소스 위치에서 하이브 데이터웨어 하우스 위치로 이동하지 않는 'LOAD DATA'대신 사용할 수 있습니다.

    'LOCATION'옵션과 함께 ALTER TABLE 명령을 사용할 수 있습니다. 다음은 필수 명령입니다.

    ALTER TABLE table_name ADD PARTITION (date_col='2017-02-07') LOCATION 'hdfs/path/to/location/'
    

    유일한 조건은 위치가 파일 대신 디렉토리 여야한다는 것입니다.

    희망이 문제를 해결할 것입니다.

  4. from https://stackoverflow.com/questions/7567605/how-to-load-data-to-hive-from-hdfs-without-removing-the-source-file by cc-by-sa and MIT license