hive Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 处理

本文分享了一次使用Hive进行数据处理时遇到的Map内存溢出问题及解决方案。作者通过调整Hive配置,如关闭map端join、设置reduce个数等方法,解决了这一难题。文章还提到了一些常见的错误解决思路,如检查集群时间同步、更改count(*)为count(1)等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在用hive -e 跑数据的时候,表中的数据是以月份和省份分区的,有的分区跑成功有的分区跑失败了。一眼看到报的错是map内存溢出,非常郁闷。首先我想到的是map的数量不够,或者是分片出了问题。

网上说有好多原因:

1、集群时间没有同步<我们的集群是生产集群怎么可能犯这种错误>;

2、将count(*)换count(1)<这个解决办法根本就是瞎扯>;

3、设置set mapred.max.split.size,将分片“缩小”,这样的坏处就是会起更多的map< 我没有试验>;

4、我的解决办法:

     关闭map端join:set hive.auto.convert.join=false;
     设置reduce个数:set mapred.reduce.tasks=24;

得出的结论就是,报这个错首先要想到是map和reduce个数,根据日志map和reduce个数加大,如果个数加大以后还是报错,那么切换一个资源较大的队列试一下。要是继续报错那只能从配置文件找问题了。

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值