Hive

Hive Partition 추가 및 변경 (ALTER TABLE, MSCK REPAIR)

케키키케 2024. 4. 18. 00:05

 

1. ALTER TABLE

일반적인 파티션 추가 방법

1-depth

ALTER TABLE DB명.테이블명 ADD IF NOT EXISTS PARTITION(파티션=1) LOCATION '/test/파티션=1'

 

2-depth

ALTER TABLE DB명.테이블명 ADD IF NOT EXISTS PARTITION(파티션1=a,파티션2=b ) LOCATION '/test/파티션1=a/파티션2=b'

 

 

2. MSCK REPAIR 

신규 테이블 생성하거나 및 대량의 데이터 추가 적재로 인해 파티션을 새로 생성해야 하는 경우!

추가할 파티션이 너무 많은 경우! 혹은 파티션이 2depth 여서 추가할 파티션이 더더더더 많은 경우!

 

MSCK REPAIR를 통해 파티션을 추가할 수 있다.

파티션 정보를 메타스토어에 관리하는데, MSCK REPAIR를 통해 추적되지 않은 파티션을 추가할 수 있다.

기본적으로 파티션을 추가하는 데에 사용하고, HDFS에서 삭제된 데이터를 바라보는 파티션을 삭제하고 싶은 경우 DROP 옵션을 추가한다. 

*SYNC PARTITIONS 옵션은 ADD 및 DROP PARTITIONS를 모두 호출하는 것과 동일하다.

MSCK [REPAIR] TABLE table_name [ADD/DROP/SYNC PARTITIONS];

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-RecoverPartitions(MSCKREPAIRTABLE)

 

그러나 추적되지 않은 파티션이 너~무 많은 경우 OOME( 메모리 부족 오류) 이 발생할 수 있다.

hive.msck.repair.batch.size 속성을 통해 배치 작업으로 실행이 가능하고, 기본 값은 0이다.

이는 그냥 한번에 냅다 실행하는 것을 의미한다.

 

LanguageManual DDL - Apache Hive - Apache Software Foundation

ADD, ADMIN, AFTER, ANALYZE, ARCHIVE, ASC, BEFORE, BUCKET, BUCKETS, CASCADE, CHANGE, CLUSTER, CLUSTERED, CLUSTERSTATUS, COLLECTION, COLUMNS, COMMENT, COMPACT, COMPACTIONS, COMPUTE, CONCATENATE, CONTINUE, DATA, DATABASES, DATETIME, DAY, DBPROPERTIES, DEFERRE

cwiki.apache.org

https://wikidocs.net/23557

 

03-파티션

파티션은 데이터를 디렉토리로 분리하여 저장합니다. 하이브 같은 파일 기반 테이블은 기본적으로 테이블의 모든 roww 정보를 읽기 때문에 데이터가 많아지면 속도가 느려집니다. 파티…

wikidocs.net

 

 

beeline이나 hive서버에 붙어서 세팅 값을 변경한다.

혹은 hive 설정에 추가

set hive.msck.repair.batch.size=1000;

 

위 처럼 적용 하고 실행