Hive无论是创建好的外部表和内部表,如果是分区好的情况下,如果teacher表是按照day进行分区
这是正规的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官网也说了,慎用,他会刷所有分区
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...
