我的错误是这样:在hive里面什么都可以,就是关于多表连接join的时候不行,一直报这个错误,后来找了很多方法都不行,知道看到篇帖子,下面留言看到了。
Code 1 错误:RROR : /tmp/hadoop/hive.log
ERROR : FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
INFO : Completed executing command(queryId=hadoop_20241128052903_be1132c5-0849-4641-b2c5-7500d58f94f8); Time taken: 4.568 seconds
Error: Error while compiling statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask (state=08S01,code=1)
解决方法:
关闭自动转换Join操作:有时候关闭Hive的自动转换Join操作可以解决问题:SET hive.auto.convert.join=false;
就是在hive命令行上先执行 SET hive.auto.convert.join=false; 这句话,再执行join语句,我就成功解决了,有运行结果了。
解决插入错误 code 2:hive报错Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
参考文献:
hive报错Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask-优快云博客
我是用了第十个办法解决的,因为我是自己配置的hive文件,配置完成之后,然后记得重新启动个集群,尤其是hiveserver2!!!,不然不会更新配置信息,还是会报一样的错误,因为我就是一直没重新启动hiveserver2,所以一直解决不了,更改完配置之后,重启就可以正常insert了。
方法十:hive启动堆栈内存不足
修改配置文件hadoop-env.sh (去到自己的hadoop目录下的etc/hadoop)
(下面的只是我自己的路径)
cd /usr/local/hadoop/etc/hadoop
vim hadoop-env.sh
加入:
export HADOOP_CLIENT_OPTS="-Xmx2048m $HADOOP_CLIENT_OPTS"
hive下的bin目录下的配置文件hive-config.sh(同理,去到自己的hive/bin/目录下)
(下面的只是我自己的路径)
cd usr/local/hive/bin
vim hive-config.sh
加入:
export HADOOP_HEAPSIZE=${HADOOP_HEAPSIZE:-2048}
但在后来,我的好像又报错了,然后就在执行命令insert之前执行下面三条语句 又可以了:
设最大分区:
SET hive.exec.max.dynamic.partitions=20000;
SET hive.exec.max.dynamic.partitions.pernode=20000;
SET hive.exec.dynamic.partition.mode=nonstrict;
我不是专业的,只是在学习的过程中,把自己的报错以及解决方法写出来,后面自己可以回顾,可能也可以帮到大家。