什么是Hive:从org.apache.hadoop.hive.ql.exec.MapRedTask返回代码2

nic*_*ine 55 hadoop hive mapreduce

我正进入(状态:

FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask
Run Code Online (Sandbox Code Playgroud)

尝试使用hive控制台中的命令创建分区表的副本​​时:

CREATE TABLE copy_table_name LIKE table_name;
INSERT OVERWRITE TABLE copy_table_name PARTITION(day) SELECT * FROM table_name;
Run Code Online (Sandbox Code Playgroud)

我最初得到一些语义分析错误,不得不设置:

set hive.exec.dynamic.partition=true
set hive.exec.dynamic.partition.mode=nonstrict
Run Code Online (Sandbox Code Playgroud)

虽然我不确定上面的属性是做什么的?

蜂巢控制台的全部输出:

Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks determined at compile time: 1
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
  set mapred.reduce.tasks=<number>
Starting Job = job_201206191101_4557, Tracking URL = http://jobtracker:50030/jobdetails.jsp?jobid=job_201206191101_4557
Kill Command = /usr/lib/hadoop/bin/hadoop job  -Dmapred.job.tracker=master:8021 -kill job_201206191101_4557
2012-06-25 09:53:05,826 Stage-1 map = 0%,  reduce = 0%
2012-06-25 09:53:53,044 Stage-1 map = 100%,  reduce = 100%
Ended Job = job_201206191101_4557 with errors
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask
Run Code Online (Sandbox Code Playgroud)

Mat*_*one 102

这不是真正的错误,这是如何找到它:

转到hadoop jobtracker web-dashboard,找到失败的hive mapreduce作业并查看失败任务的日志.这将显示真正的错误.

控制台输出错误是无用的,主要是因为它没有单独的作业/任务的视图来拉出真正的错误(多个任务可能有错误)

希望有所帮助.

  • 有什么方法可以在不使用Web仪表板的情况下查看日志? (6认同)

小智 14

我知道我在这个帖子上已经迟到了3年,但是在将来仍然为类似案件提供2美分.

我最近在我的群集中遇到了同样的问题/错误.JOB总是会减少80%以上,并且会因同样的错误而失败,执行日志中也没有任何内容.经过多次迭代和研究后,我发现在加载过多的文件中,有些文件不符合为基表提供的结构(用于将数据插入分区表的表).

这里需要注意的是,每当我对分区列中的特定值执行select查询或创建静态分区时,它就可以正常运行,因为在这种情况下,错误记录被跳过.

TL; DR:检查传入的数据/文件是否存在结构不一致,因为HIVE遵循Schema-On-Read原则.