Hive的[MSCK REPAIR TABLE] 命令全量修复分区,目的就是将分区信息更新到元数据库中。该命令通常用于分区表的分区修复。 官方解释:(翻译版)
Hive将每个表的分区信息保存在metastore中,如果通过hadoop fs -put命令直接将分区信息添加到HDFS,metastore是不会感知到这些新增的分区,除非执行了ALTER TABLE table_name ADD PARTITION命令。但是用户可以运行metastore检查命令MSCK REPAIR TABLE table_name; 该命令将关于分区的元信息添加到Hive metastore中,这是对于那些没有元信息的分区来说的。换句话说,就是将任何存在于HDFS上但不在metastore上的分区添加到metastore。
案例一:CDH-HDP 数仓迁移后分区修改
例如从CDH迁移到HDP环境,distcp数据之后HDFS文件已经迁移到HDP的HDFS目录,但是在HDP环境中的hive未查到数据,就需要进行分区修复。
hdfs dfs -cp /cdhtest/dw_om_actual_sales_f_crm_bak/dw_om_actual_sales_f_crm_bak
|