一、介绍
我们平时通常是通过alter table add partition方式增加Hive的分区的,但有时候会通过HDFS put/cp命令往表目录下拷贝分区目录,如果目录多,需要执行多条alter语句,非常麻烦。Hive提供了一个"Recover Partition"的功能。
具体语法如下:
MSCK REPAIR TABLE table_name;
原理相当简单,执行后,Hive会检测如果HDFS目录下存在但表的metastore中不存在的partition元信息,更新到metastore中。
二、测试
#当前没有partition元信息
hive> show partitions cr_cdma_bsi_mscktest;
OK
Time taken: 0.104 seconds
#创建两个分区目录
hive> dfs -mkdir /user/hive/warehouse/cr_cdma_bsi_mscktest/month=201603;
hive> dfs -mkdir /user/hive/warehouse/cr_cdma_bsi_mscktest/month=201604;
#使用MSCK修复分区
hive> msck repair table cr_cdma_bsi_mscktest;
OK
Partitions not in metastore: cr_cdma_bsi_mscktest:month=201603
Partitions not in metastore: cr_cdma_bsi_mscktest:month=201604
Repair: Added partition to metastore cr_cdma_bsi_mscktest:month=201603
Repair: Added partition to metastore cr_cdma_bsi_mscktest:month=201604
Time taken: 0.286 seconds, Fetched: 2 row(

本文介绍了如何使用Hive的MSCK RECOVER PARTITION功能来自动化处理HDFS中已存在的分区,避免手动执行多条ALTER语句。此功能检查并更新Hive metastore,确保元数据与实际文件系统同步。
最低0.47元/天 解锁文章
5585

被折叠的 条评论
为什么被折叠?



