msck repair table tablename execution error

问题描述/异常栈

msck repair table tablename execution error

解决方案

set hive.msck.path.validation=ignore
忽略掉不符合规则的分区,

alter table add partition xxx location 'xxxx'
手动添加分区;

问题原因

msck的实现原理是通过递归表路径下的所有子目录,拼接成MySQLDDL语句,实现自动修复分区元数据。失败原因一般是:

1、分区下路径格式不统一,建议用户通过重命名hdfs目录的方式进行修复,这样表数据是完整的;

2、分区下的路径权限不对,需用户向自己的项目管理员申请对应权限或切换具备权限的用户执行msck repair命令。

作者:林帅