首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >失败:执行错误,在配置单元中执行联接操作期间,从org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask返回代码2

失败:执行错误,在配置单元中执行联接操作期间,从org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask返回代码2
EN

Stack Overflow用户
提问于 2018-05-30 18:17:45
回答 3查看 7.1K关注 0票数 0

我正在尝试在配置单元中对以下两个表运行联接查询-

代码语言:javascript
复制
select b.location from user_activity_rule a inner join user_info_rule b where a.uid=b.uid and a.cancellation=true;

Query ID = username_20180530154141_0a187506-7aca-442a-8310-582d335ad78d
Total jobs = 1
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0
Execution log at: /tmp/username/username_20180530154141_0a187506-7aca-442a-8310-582d335ad78d.log
2018-05-30 03:41:51     Starting to launch local task to process map join;      maximum memory = 2058354688
Execution failed with exit status: 2
Obtaining error information

Task failed!
Task ID:
  Stage-4

Logs:

/tmp/username/hive.log
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask

这个错误是什么意思以及如何解决这个问题?

EN

回答 3

Stack Overflow用户

发布于 2018-05-31 16:07:39

当您尝试运行的作业内存不足时,就会发生这种情况。克服此问题的一种方法是使用以下命令:

代码语言:javascript
复制
set hive.auto.convert.join = false;

这将有助于连接优化。

有时,当使用它的并发用户数量很高时(在某个高峰期),就会发生这种情况。或者,您可以在没有多少用户使用此查询时触发该查询。显然,将有大量的空闲内存,以便您的作业可以使用所需的内存。当Dev环境中的节点较少,并且您确信在生产环境中不会出现内存问题时,可以采用这种方法。

票数 2
EN

Stack Overflow用户

发布于 2018-05-31 02:56:01

而不是使用下面的代码,并尝试

代码语言:javascript
复制
SELECT b.location FROM user_activity_rule a JOIN user_info_rule b ON(a.uid=b.uid) WHERE a.cancellation="true";
票数 0
EN

Stack Overflow用户

发布于 2018-05-31 16:14:23

首先,确保用来运行SQL的HADOOP_USER可以运行MapReduce

然后,使用SQL,如下所示:

代码语言:javascript
复制
set hive.auto.convert.join = false;
select b.location 
from user_activity_rule a 
inner join user_info_rule b 
where a.uid=b.uid and a.cancellation=true;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50602163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档