DB

DB - Hive (msck repair table)

개발 일기92 2025. 2. 16. 15:31

 

1. MSCK REPAIR TABLE 기본 사용법

MSCK REPAIR TABLE table_name;

 

  • HDFS에는 존재하지만 Hive의 Metastore에 등록되지 않은 파티션을 인식하여 추가.
  • 외부에서 데이터를 직접 HDFS에 로드한 경우.
  • ALTER TABLE 없이 수동으로 HDFS 경로에 파티션을 추가한 경우.

 


2. MSCK REPAIR TABLE 동작 과정

  • Hive는 HDFS 경로를 스캔하여 테이블의 디렉터리를 확인한다.
  • 기존에 등록되지 않은 새로운 파티션을 감지합니다.
  • 발견된 파티션을 Hive Metastore에 추가합니다.
  • 이후 SHOW PARTITIONS로 추가된 파티션을 확인할 수 있다.

✅ 예제: 파티션 추가 후 MSCK REPAIR TABLE 실행

hdfs dfs -mkdir /user/hive/warehouse/sales/sale_date=20240101
hdfs dfs -put sales_data.csv /user/hive/warehouse/sales/sale_date=20240101/
MSCK REPAIR TABLE sales;
SHOW PARTITIONS sales;


Hive Metastore에 sale_date=20240101 파티션이 등록

 

 


3. MSCK REPAIR TABLE 주의사항

  • 자동으로 삭제된 파티션을 감지하지 않음.
  • HDFS에서 파티션을 삭제해도 Metastore에는 남아 있음 → 수동으로 ALTER TABLE DROP PARTITION 필요

해결법:

ALTER TABLE sales DROP PARTITION (sale_date='20240101');

 

 


4. MSCK REPAIR TABLE의 대체 방법

  • ALTER TABLE ADD PARTITION으로 직접 추가




5. 요약

 

  • 역할 HDFS에는 존재하지만 Hive Metastore에 등록되지 않은 파티션을 추가
  • 사용법 : MSCK REPAIR TABLE table_name;
  • 언제 사용? : HDFS에 직접 파티션 추가 후 Hive에서 인식되지 않을 때
  • 주의점 : 삭제된 파티션은 자동으로 제거되지 않음, 테이블 크기에 따라 느려질 수 있음
  • 대체 방법 : ALTER TABLE ADD PARTITION을 사용 (속도 개선)


6. 결론
MSCK REPAIR TABLE은 외부에서 직접 HDFS에 추가한 파티션을 Metastore에 등록할 때 유용함.
하지만 성능 저하 가능성이 있으므로, 특정 파티션만 추가할 경우 ALTER TABLE ADD PARTITION을 사용하는 것이 더 효율적일 수 있음. 

'DB' 카테고리의 다른 글

Hive - index, partition 비교 및 정리  (0) 2025.03.09
DB - partition 접근  (0) 2025.02.16
Hive - UDF  (1) 2025.02.02
Hive - HQL 함수  (0) 2025.02.02
SQL - begin, index, anti-join  (0) 2025.01.19