복붙노트

[HADOOP] 하이브에서 'load data inpath'와 'location'의 차이점은 무엇입니까?

HADOOP

하이브에서 'load data inpath'와 'location'의 차이점은 무엇입니까?

우리 회사에서는이 두 명령이 자주 사용되는 것을 보았습니다. 그 차이점을 알고 싶습니다. 그 기능이 저와 동일하기 때문입니다.

create table <mytable> 
(name string,
number double);

load data inpath '/directory-path/file.csv' into <mytable>; 
create table <mytable>
(name string,
number double);

location '/directory-path/file.csv';

그들은 모두 HDFS의 디렉토리에있는 데이터를 HIVE의 테이블에 대한 디렉토리로 복사합니다. 이들을 사용할 때주의해야 할 차이점이 있습니까? 고맙습니다.

해결법

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

    1.그렇습니다, 그들은 전혀 다른 목적으로 사용됩니다.

    그렇습니다, 그들은 전혀 다른 목적으로 사용됩니다.

    load data inpath 명령은 하이브 테이블에 데이터를로드하는 데 사용됩니다. 'LOCAL'은 입력 파일이 로컬 파일 시스템에 있음을 나타냅니다. 'LOCAL'이 생략되면 HDFS에서 파일을 찾습니다.

    load data inpath '/directory-path/file.csv' into <mytable>; 
    load data local inpath '/local-directory-path/file.csv' into <mytable>;
    

    LOCATION 키워드는 구성 등록 정보 hive.metastore.warehouse.dir에 지정된 폴더에 저장되는 것이 아니라 저장소에 대한 모든 HDFS 위치를 가리킬 수 있습니다.

    즉, 'LOCATION'/ your-path / '를 지정하면 하이브는이 테이블의 기본 위치를 사용하지 않습니다. 이미 데이터가 생성 된 경우 유용합니다.

    LOCATION은 EXTERNAL 테이블에만 지정할 수 있습니다. 일반 테이블의 경우 기본 위치가 사용됩니다.

    요약, 로드 데이터 inpath는 하이브에게 입력 파일을 찾을 위치를 알려주고 LOCATION 키워드는 하이브에게 HDFS에 출력 파일을 저장할 위치를 알려줍니다.

    참고 문헌 : https://cwiki.apache.org/confluence/display/Hive/GettingStarted https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL

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

    2.옵션 1 : 내부 테이블

    옵션 1 : 내부 테이블

    create table <mytable> 
    (name string,
    number double);
    
    load data inpath '/directory-path/file.csv' into <mytable>; 
    

    이 명령은 소스 디렉토리의 내용을 제거하고 내부 테이블을 작성합니다.

    옵션 2 : 외부 테이블

     create table <mytable>
     (name string,
     number double);
    
    location '/directory-path/file.csv';
    

    외부 테이블을 생성하고 테이블에 데이터를 복사하십시오. 이제 데이터가 소스에서 이동되지 않습니다. 외부 테이블을 삭제할 수 있지만 여전히 소스 데이터를 사용할 수 있습니다.

    외부 테이블을 삭제하면 HIVE 테이블의 메타 데이터 만 삭제됩니다. 데이터가 HDFS 파일 위치에 계속 존재합니다.

    내부 및 외부 테이블 모두에 대한 사용 사례와 관련된 SE 관련 질문을 살펴보십시오.

    하이브 내부 테이블과 외부 테이블의 차이점은 무엇입니까?

  3. from https://stackoverflow.com/questions/35473933/difference-between-load-data-inpath-and-location-in-hive by cc-by-sa and MIT license