当前位置:  开发笔记 > 运维 > 正文

Hive查询执行错误,从MapredLocalTask​​返回代码3

如何解决《Hive查询执行错误,从MapredLocalTask​​返回代码3》经验,为你挑选了1个好方法。

我在两个表之间执行简单连接时收到此错误.我在Hive命令行中运行此查询.我将表命名为a&b.表a是Hive内部表,b是外部表(在Cassandra中).表a只有1610行,表b有~8百万行.在实际生产场景中,表a可以达到100K行.下面显示的是我与表b的连接作为连接中的最后一个表

选择a.col1,a.col2,b.col3,b.col4 FROM JOIN b ON(a.col1 = b.col1 AND a.col2 = b.col2);

下面显示的是错误

总MapReduce作业= 1
执行日志位于:/tmp/pricadmn/.log
2014-04-09 07:15:36开始启动本地任务来处理地图联接; 最大内存= 932184064
2014-04-09 07:16:41处理行数:200000哈希表大小:199999内存使用情况:197529208百分比:0.212
2014-04-09 07:17:12处理行数:300000哈希表大小:299999内存使用情况: 163894528比例:0.176
2014年4月9日七时十七分43秒处理行:400000哈希表大小:399999内存使用:347109936比例:0.372
... ...
... ...
... ...

2014年4月9日7时24分29秒处理行:1600000哈希表大小:1599999内存使用情况:714454400百分比:0.766
2014-04-09 07:25:03处理行:1700000哈希表大小:1699999内存使用情况:901427928百分比:0.967
执行失败,退出状态:3
获取错误信息


任务失败!
任务ID:
Stage- 5日志

:

/u/applic/pricadmn/dse-4.0.1/logs/hive/hive.log
FAILED:执行错误,从org.apache.hadoop.hive.ql.exec.mr返回代码3 .MapredLocalTask

我正在使用DSE 4.0.1.以下是我可能感兴趣的一些设置
mapred.map.child.java.opts = -Xmx512M
mapred.reduce.child.java.opts = -Xmx512M
mapred.reduce.parallel.copies = 20
hive.auto.convert .加入=真

我将mapred.map.child.java.opts增加到了1G,我得到了更多的记录然后出错了.它看起来不是一个好的解决方案.我也改变了连接中的顺序但没有帮助.我看到这个链接Hive Map join:out of memory Exception但是没有解决我的问题.

对我来说,看起来Hive试图在本地任务阶段将更大的表放在内存中,我感到困惑.根据我的理解,第二张表(在我的情况下表b)应该流入.如果我错了,请纠正我.我们非常感谢您解决此问题的任何帮助.



1> 小智..:
set hive.auto.convert.join = false;


如果您能够更详细地解释这将如何解决给定问题,那将是很好的.
推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有