cdm场景迁移部分表迁移失败
【问题现象】:
使用2.8.2版本的cdm场景迁移功能迁移线下Hive数据到MRS Hive,最终作业状态显示Failed
【问题分析】:
1.点击场景迁移作业名称,进入子作业列表,可以看到每张表都对应一个子作业,子作业名称为:场景迁移作业名称_表名。找到失败的子作业,点击状态栏的问号出现以下报错:
Table creation failed. Cause: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.
2.点击失败子作业后面的历史记录,可以看到作业详细信息
3.点击子作业日志,发现以下报错:
An ERROR occurred when repairing the table `hlg`.`shop`.
java.sql.SQLException: ERROR while processing statement: failed: Execution ERROR, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTas
4.由上图可知是在进行repair步骤时发生异常,登录mrs集群master节点,查看/var/log/Bigdata/hive/hiveserver/hive.log日志,可以看到以下报错:org.apache.hadoop.hive.ql.metadata.HiveException:
org.apache.hadoop.hive.ql.metadata.HiveException: Invalid partition name hdfs://hacluster/user/hive/warehouse/hlg.db/shop/01
5.执行命令beeline登录hive的客户端,show create table tableName查看表结构可知该表是分区表,分区字段为month和day
6.使用hdfs命令可以看到表数据目录如下:
可知数据文件迁移成功,但是hive修复表分区时无法识别该路径,hive正常分区表数据路径格式应该为:/user/hive/warehouse/hlg.db/shop/month=01/day=01/000000_0
经确认,原表数据是手动创建的分区目录,并把数据文件上传进去,所以迁移过来之后也是这种路径格式
【解决方案】:
1.手动修改数据目录为/user/hive/warehouse/hlg.db/shop/month=01/day=01/000000_0
2.在beeline中重新修复表分区:msck repair table shop;
查询数据成功
- 点赞
- 收藏
- 关注作者
评论(0)