[Hive] 파티션 관련 명령 모음(파티션 생성, 추가, 삭제 명령)

    안녕하세요. 이번 시간에는 Hive의 파티션에 대해 사용할 수 있는 스크립트를 몇 가지 정리해보려고 합니다. Hive 테이블은 파티션으로 데이터를 분할해서 관리함으로써 데이터를 조회할 때 파티션으로 걸려있는 컬럼을 조건으로 추가해서 조회하면 조회 성능을 향상 시킬 수가 있고, 데이터 관리 측면에서도 파티션 단위로 관리할 수 있기 때문에 훨씬 용이합니다.

     

    아파치 하이브 파티션 구조

    ▶ 파티션 테이블 생성

    먼저 파티션 테이블은 다음과 같은 쿼리로 생성할 수 있습니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE EXTERNAL TABLE tb_sample (
        userid string
        , createDateTime bigint
    )
    PARTITIONED BY (month int, day int-- 다중 레벨 파티션
    -- PARTITIONED BY (ymd STRING) -- 단일 파티션
    STORED AS PARQUET
    LOCATION '/data/partition_test'
    ;
     
     

    이렇게 파티션을 생성하고 나면 hdfs 혹은 s3에 계층구조로 다음과 같이 파케이 파일이 저장됩니다.

    1
    2
    3
    4
    5
    drwxr-xr-- root supergroup 0 2021-04-21 12:00 /data/partition_test
    drwxr-xr-- root supergroup 0 2021-04-21 12:00 /data/partition_test/month=1
    drwxr-xr-- root supergroup 0 2021-04-21 12:00 /data/partition_test/month=1/day=1
    drwxr-xr-- root supergroup 0 2021-04-21 12:00 /data/partition_test/month=1/day=2
    drwxr-xr-- root supergroup 0 2021-04-21 12:00 /data/partition_test/month=1/day=3
    cs

    ▶ 파티션 추가

    혹시 기존에 생성되어 있는 테이블에 파티션이 걸려있지 않은 경우에는 다음과 같은 방법으로 파티션을 추가할 수 있습니다.

    1
    2
    ALTER TABLE partition_test ADD PARTITION (month=5, day=1)
    LOCATION '/data/partition_test/month=5/day=1';
     

    ▶ 지정된 파티션 변경하기

    지정된 파티션명을 변경할때에는 아래와 같이 변경합니다.
    1
    alter table partition_test partition (month='3') rename to partition (month='4')
     

    ▶ 파티션 삭제 쿼리

    파티션을 삭제하는 작업은 하나의 파티션만 삭제할 수도 있고 여러개의 파티션을 범위로 지정해서 삭제하는 것도 가능한데, 아래의 쿼리로 파티션 삭제가 가능합니다.

    * 외부 테이블(external table)인 경우에는 파티션을 삭제해도 스키마만 제거되고 해당 경로에 있는 데이터는 지워지지 않습니다.

    1
    2
    --파티션 범위 제거
    ALTER TABLE partition_test DROP PARTITION (day > '15', dates < '17');
     
     

    ▶ 파티션 조회

    테이블에 파티션이 어떻게 생성되어 있는지 확인하려는 경우에는 아래의 명령어를 사용합니다.

    1
    show partition partition_test;
     

    지금까지 Hive에서 파티션과 관련하여 사용할 수 있는 스크립트들을 살펴보았습니다. 감사합니다.

    댓글(0)

    재테크에 대한 모든 정보 다니엘의 라이브러리