Bug信息
Error: Error while compiling statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.ddl.DDLTask (state=08S01,code=1)
Bug产生的代码
修复hive表分区:
msck repair table xxx
Bug原因排查
- 分区数量过大
这个是网上查看的说如果一次性修复大量的分区可能会报这样的错误,但是我仅仅有一百多个分目录,因此直接排除该原因。 - 分区数据缺失
如果表的分区有两个字段,但是hdfs上对应只有一个分区字段,这种情况就会报上面的错。因此我对各个分区进行了检测,发现果然有个分区目录少了数据
Bug解决方法
- 删除掉没有数据的分区
这种适合于能明确知道为什么当天分区数据缺失,如果经常出现这种情况,显然不可能每天都手动删除。 - set hive.msck.path.validation=ignore
hive.msck.path.validation=ignore 是 Apache Hive 中的一个配置参数,与 MSCK REPAIR TABLE 命令相关。M