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 |