hive报错:code 1 maprelocaltask; code 2 MapRedTask

我的错误是这样:在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;

我不是专业的,只是在学习的过程中,把自己的报错以及解决方法写出来,后面自己可以回顾,可能也可以帮到大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值