我正在尝试在配置单元中对以下两个表运行联接查询-
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这个错误是什么意思以及如何解决这个问题?
发布于 2018-05-31 16:07:39
当您尝试运行的作业内存不足时,就会发生这种情况。克服此问题的一种方法是使用以下命令:
set hive.auto.convert.join = false;这将有助于连接优化。
有时,当使用它的并发用户数量很高时(在某个高峰期),就会发生这种情况。或者,您可以在没有多少用户使用此查询时触发该查询。显然,将有大量的空闲内存,以便您的作业可以使用所需的内存。当Dev环境中的节点较少,并且您确信在生产环境中不会出现内存问题时,可以采用这种方法。
发布于 2018-05-31 02:56:01
而不是使用下面的代码,并尝试
SELECT b.location FROM user_activity_rule a JOIN user_info_rule b ON(a.uid=b.uid) WHERE a.cancellation="true";发布于 2018-05-31 16:14:23
首先,确保用来运行SQL的HADOOP_USER可以运行MapReduce。
然后,使用SQL,如下所示:
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;https://stackoverflow.com/questions/50602163
复制相似问题