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

我在用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个数加大,如果个数加大以后还是报错,那么切换一个资源较大的队列试一下。要是继续报错那只能从配置文件找问题了。

      

你可能感兴趣的:(hive Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 处理)