赞
踩
msck repair table tablename
修复表分区,常用于手动复制目录到hive表的location下,此时Hive元数据中没有记录到该目录是hive的分区,所以查不到该分区数据。
例子:
表test_tbl,存储路径为/user/hive/warehouse/test_tbl,分区字段为pt,正常添加分区是这样的:
alter table add if not exist partition (pt='20190101');
然后在hdfs中表的存储目录下会生成分区目录/user/hive/warehouse/test_tbl/pt=20190101,此时无论是往该目录新增数据文件还是往hive中insert数据,之后都可以在hive中查到该分区的数据。
但如果直接将一个文件夹名为pt=20190201的上传至hdfs的/user/hive/warehouse/test_tbl/路径下,在hive中是查不到分区pt='20190201'的数据的,就如前面所说,hive的metadata中没有记录到分区20190201这个分区,因此需要执行msck repair table命令修复。
此命令也常用于distcp数据之后修复表分区。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。