본문 바로가기
빅데이터/hive

[hive] 테이블의 파티션을 범위로 삭제(Drop)하는 방법

by hs_seo 2019. 4. 1.

하이브 테이블의 파티션을 제거(drop)하는 문법은 다음과 같습니다.

ALTER TABLE table_name DROP PARTITION(partition_name='partitions_value');

yyyymmdd 파티션을 가지는 table을 이용해서 삭제 방법을 알아보겠습니다.

# table은 yyyymmdd 파티션을 가지고 있음 
hive> show partitions table;
OK
yyyymmdd=20190220
yyyymmdd=20190221
yyyymmdd=20190222
yyyymmdd=20190223
yyyymmdd=20190224
yyyymmdd=20190225
yyyymmdd=20190226
yyyymmdd=20190227
yyyymmdd=20190228
yyyymmdd=20190229

# 2019.02.23 일자 파티션 삭제 
ALTER TABLE table DROP PARTITION (yyyymmdd='20190223')

# 2019.02.23 일 미만의 일자 삭제, (20, 21, 22일 삭제)
ALTER TABLE table DROP PARTITION (yyyymmdd < '20190223')

# 2019.02.23 일 이하의 일자 삭제, (20, 21, 22, 23일 삭제)
ALTER TABLE table DROP PARTITION (yyyymmdd <= '20190223')

# 2019.02.23 일 미만의 일자와 27일 초과의 데이터 삭제(20, 21, 22, 28, 29 일 삭제)
ALTER TABLE table DROP PARTITION (yyyymmdd < '20190223'), PARTITION (yyyymmdd > '20190227');

범위로 삭제할 때 주의할 점은 between 과 같은 문법을 사용하면 안됩니다.

 

다음의 예제는 24일에서 26일의 파티션을 삭제 할 것 같지만 and 조건으로 뭉쳐서 처리되지 않기 때문에 23일 이상의 파티션과 27일 이하의 파티션을 모두 삭제하여 테이블에 존재하는 모든 파티션을 삭제하게 됩니다.

ALTER TABLE table DROP PARTITION (yyyymmdd > '20190223'), PARTITION (yyyymmdd < '20190227');
반응형