СБОЙ: Ошибка выполнения, код возврата 2 из org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask ​​во время операции соединения в кусте - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь выполнить запрос соединения в кусте для следующих двух таблиц-

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

Что означает эта ошибка и как ее устранить?

Ответы [ 3 ]

0 голосов
/ 31 мая 2018

Это происходит, когда задание, которое вы пытаетесь выполнить, не хватает памяти.Одним из способов преодоления этого является использование этой команды:

set hive.auto.convert.join = false;

Это поможет в оптимизации объединения.

Иногда, когда число одновременных пользователей, использующих его, велико (в какое-то пиковое время), Бывает.В качестве альтернативы, вы можете запустить этот запрос, когда его использует не так много пользователей.Очевидно, было бы много свободной памяти, чтобы ваша работа могла потреблять требуемую.Эту альтернативу можно использовать, когда в среде Dev меньше узлов, и вы уверены, что при работе не возникнет проблем с памятью.

0 голосов
/ 31 мая 2018

Прежде всего, убедитесь, что HADOOP_USER, который вы использовали для запуска SQL, может запускать 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;
0 голосов
/ 30 мая 2018

Вместо того, где вы можете использовать приведенный ниже код и попробовать

SELECT b.location FROM user_activity_rule a JOIN user_info_rule b ON(a.uid=b.uid) WHERE a.cancellation="true";
...