gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 02:45:39 27 4
gpt4 key购买 nike

在两个表之间执行简单连接时出现此错误。我在 Hive 命令行中运行此查询。我将表命名为 a & b。表 a 是 Hive 内部表,b 是外部表(在 Cassandra 中)。表 a 只有 1610 行,表 b 有大约 800 万行。在实际生产场景中,表 a 最多可以有 10 万行。下面显示的是我与表 b 的联接作为联接中的最后一个表

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



下面显示的是错误

Total MapReduce jobs = 1
Execution log at: /tmp/pricadmn/.log
2014-04-09 07:15:36 Starting to launch local task to process map join; maximum memory = 932184064
2014-04-09 07:16:41 Processing rows: 200000 Hashtable size: 199999 Memory usage: 197529208 percentage: 0.212
2014-04-09 07:17:12 Processing rows: 300000 Hashtable size: 299999 Memory usage: 163894528 percentage: 0.176
2014-04-09 07:17:43 Processing rows: 400000 Hashtable size: 399999 Memory usage: 347109936 percentage: 0.372
...
...
...

2014-04-09 07:24:29 Processing rows: 1600000 Hashtable size: 1599999 Memory usage: 714454400 percentage: 0.766
2014-04-09 07:25:03 Processing rows: 1700000 Hashtable size: 1699999 Memory usage: 901427928 percentage: 0.967
Execution failed with exit status: 3
Obtaining error information


Task failed!
Task ID:
Stage-5

Logs:

/u/applic/pricadmn/dse-4.0.1/logs/hive/hive.log
FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.mr.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.join=true

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

对我来说,看起来 Hive 试图在本地任务阶段将更大的表放入内存中,这让我感到困惑。根据我的理解,第二个表(在我的情况下是表 b)应该流入。如果我错了,请纠正我。对解决此问题的任何帮助表示高度赞赏。

最佳答案

set hive.auto.convert.join = false;

关于Hive 查询执行错误,从 MapredLocalTask​​ 返回代码 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22977790/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com