Hive的MSCK和alter添加分区遇到的坑

Hive无论是创建好的外部表和内部表,如果是分区好的情况下,如果teacher表是按照day进行分区

Hive的MSCK和alter添加分区遇到的坑

这是正规的day分区形式,但是有一天你同事不清楚这个分区,他直接传递了一个 20201216 文件夹,名字并不是按照 day=20201216 ,直接放一个 20201216
,如果用msck table tablename,是可以扫描出来的.但是你仔细看,会发现扫描出来的不对,他是20201216,不是day=20201216

这时候你直接msck repair table tablename;报错
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

这个错误百度查到的都不相关的,所以创建表分区时候,如果提前文件夹文件放好,文件夹名字必定是分区字段=分区名称.尤其是外部表分区.深坑.

而且如果是分区表的话,由于文件是提前创建好的,即不符个命名规则的文件夹,直接20201216这种,如果你想用alter table tablename addparititon时候,必定要在后面加上location,由于他会默认找day=20201216这个名字文件夹,而不是20201216.

但是生产过程中,MSCK官网也说了,慎用,他会刷所有分区

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...