hive加载时:第一次成功了,第二次就失败了,报错如下:
ERROR [HiveServer2-Background-Pool: Thread-11607]: ql.Driver (SessionState.java:printError(960)) - FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask
分析是旧文件crc文件与新拷贝文件的校验值不一致。
因此执行下面命令,查看crc校验文件:
find / -name *.crc
#果然找到了校验文件crc
-rw-r--r--. 1 hive hive 12 Jan 6 15:46 .hive_hadoop_delegation_token1574136949413656045.tmp.crc
-rw-r--r--. 1 hive hive 12 Jan 6 18:26 .hive_hadoop_delegation_token2064869038136188932.tmp.crc
-rw-r--r--. 1 hive hive 12 Jan 6 18:25 .hive_hadoop_delegation_token4312748733469350188.tmp.crc
-rw-r--r--. 1 hive hive 12 Jan 6 15:36 .hive_hadoop_delegation_token7719290918595051733.tmp.crc
-rw-r--r--. 1 hive hive 12 Jan 6 15:39 .hive_hadoop_delegation_token9001326224025580696.tmp.crc
删除crc文件(不放心的话,可以先备份,再删除)
再次执行加载程序:
然后发现报以下错误:
Caused by: java.io.FileNotFoundException: /opt/csv/f0177b3e-b437-40de-bbeb-c1c909a44c7btestExcel.csv (Permission denied)
看样子是权限问题,检查下本地路径/opt/csv,发现权限是root:root,想到hive加载应该是用的hive用户才可以,因此,为目录授权:
chown hive:hadoop -R /opt/csv
另外:代码中涉及到hive加载的地方,用户名和密码,都要换成hive用户的用户名和密码,不能是root
改完之后,再次执行,问题解决!
总结:权限很重要呢!