복붙노트

[HADOOP] 하이브에서 외부 테이블에 파티션 만들기

HADOOP

하이브에서 외부 테이블에 파티션 만들기

내부 테이블에 동적 파티션을 성공적으로 작성하고 추가했습니다. 즉, 다음 단계를 사용하십시오.

1- 소스 테이블 작성

로컬에서 소스 테이블로 2로드 된 데이터

3- 파티션이있는 다른 테이블 생성-partition_table

4- 소스 테이블에서이 테이블로 데이터를 삽입하여 모든 파티션을 동적으로 생성

내 질문은 외부 테이블 에서이 작업을 수행하는 방법입니다. 나는 이것에 대해 너무 많은 기사를 읽었지만 혼란스러워 외부 테이블에 대한 파티션을 만들기 위해 기존 파티션에 대한 경로를 지정해야합니까 ??

예: 1 단계:

create external table1 ( name string, age int, height int)
location 'path/to/dataFile/in/HDFS';

2 단계:

alter table table1 add partition(age) 
location 'path/to/already/existing/partition'

외부 테이블에서 파티셔닝을 진행하는 방법을 잘 모르겠습니다. 누군가 같은 것을 단계별로 설명하여 도움을 줄 수 있습니까?

미리 감사드립니다!

해결법

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

    1.1. 아래 속성 설정

    1. 아래 속성 설정

    hive.exec.dynamic.partition = true 설정

    hive.exec.dynamic.partition.mode = nonstrict 설정

    2. 외부 파티션 된 테이블 작성

    외부 table1 만들기 (이름 문자열, age int, height int)     위치 'path / to / dataFile / in / HDFS';

    3. 소스 테이블에서 파티션 된 테이블로 데이터를 삽입하십시오.

    기본적으로 프로세스는 동일합니다. 외부 파티션 된 테이블을 작성하고 파티션을 작성하고 저장할 테이블에 대한 HDFS 경로를 제공한다는 것입니다.

    도움이 되었기를 바랍니다.

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

    2.예, 파티션 필드가 무엇인지 명시 적으로 Hive에 알려야합니다.

    예, 파티션 필드가 무엇인지 명시 적으로 Hive에 알려야합니다.

    외부 테이블을 작성하려는 다음 HDFS 디렉토리가 있다고 가정하십시오.

    /path/to/dataFile/
    

    이 디렉토리에 이미 다음과 같이 데이터가 저장되고 (분할 된) 부서가 있다고 가정 해 봅시다.

    /path/to/dataFile/dept1
    /path/to/dataFile/dept2
    /path/to/dataFile/dept3
    

    이러한 각 디렉토리에는 각 파일이있는 여러 파일이 있습니다. 이름, 연령, 높이 등의 필드에 대한 실제 쉼표로 구분 된 데이터를 포함합니다.

    e.g.
        /path/to/dataFile/dept1/file1.txt
        /path/to/dataFile/dept1/file2.txt
    

    이제 이것에 대한 외부 테이블을 만들어 봅시다 :

    1 단계. 외부 테이블을 만듭니다.

    CREATE EXTERNAL TABLE testdb.table1(name string, age int, height int)
    PARTITIONED BY (dept string)
    ROW FORMAT DELIMITED
    STORED AS TEXTFILE
    LOCATION '/path/to/dataFile/';
    

    단계 2. 파티션 추가 :

    ALTER TABLE testdb.table1 ADD PARTITION (dept='dept1') LOCATION '/path/to/dataFile/dept1';
    ALTER TABLE testdb.table1 ADD PARTITION (dept='dept2') LOCATION '/path/to/dataFile/dept2';
    ALTER TABLE testdb.table1 ADD PARTITION (dept='dept3') LOCATION '/path/to/dataFile/dept3';
    

    선택 쿼리를 한 번 실행하여 데이터가 성공적으로로드되었는지 확인하십시오.

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

    3.아래 단계를 수행하십시오.

    아래 단계를 수행하십시오.

    그게 다야. 다음을 사용하여 파티션 정보를 확인할 수 있습니다

    show partitions external_dynamic;
    

    외부 테이블인지 아닌지를 확인할 수도 있습니다.

    describe formatted external_dynamic;
    

    외부 테이블은 데이터가 하이브웨어 하우스로 이동되지 않는 Hive의 테이블 유형입니다. 즉, U가 테이블을 삭제하더라도 데이터는 계속 유지되며 항상 최신 데이터를 가져옵니다. 이는 관리되는 테이블의 경우에는 해당되지 않습니다.

  4. from https://stackoverflow.com/questions/32580356/creating-partition-in-external-table-in-hive by cc-by-sa and MIT license