FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask. Unable to move source hdfs://master:8020/user/hive/warehouse/app_xgdsj.db/student_consume_trend_group/year=2023/.hive-staging_hive_2023-10-31_20-30-53_009_9218967460329396263-1/-ext-10000 to destination hdfs://master:8020/user/hive/warehouse/app_xgdsj.db/student_consume_trend_group/year=2023
问题
unable to move source hdfs
思路
1.报错情况
有个小伙伴hive任务报错,moving data时,报错如下
Failded with exception:unable to move source hdfs://…
2.问题排查
这种情况一般跟任务没有关系了,说明hive任务已经执行成功了。因为默认hive,spark任务数据先写到一个临时目录,等各个节点的数据都写完整以后,校验没问题了,在move到表的hdfs路径下(所谓move其实就是重命令),这个过程报错,说明跟hdfs有关系,跟yarn,hive,spark都没有关系了。
查看yarn日志,显示日志果然已经执行成功。
既然跟hdfs有关系,那就说明一般是路径有问题(比如权限,路径异常,节点丢失等等)。
先看hdfs路径,发现该路径下竟然有文件,不合理哇,看文件时间不是任务执行时间。表都未创建。很明显因为这个路径有数据存在,造成表加载异常,move失败。(原因是因为为了数据安全,hdfs路径加T权限,只有表的所有者才可以删表,其他人删不了数据,估计是删表异常,造成数据未删除。)
3.解决方案
解决
hdfs dfs -rm -r /user/hive/warehouse/app_xgdsj.db/student_consume_trend_group/year=2023
很简单,把表所在的路径数据清空即可
任务重跑,问题解决