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作业并查看失败任务的日志.这将显示真正的错误.
控制台输出错误是无用的,主要是因为它没有单独的作业/任务的视图来拉出真正的错误(多个任务可能有错误)
希望有所帮助.
小智 14
我知道我在这个帖子上已经迟到了3年,但是在将来仍然为类似案件提供2美分.
我最近在我的群集中遇到了同样的问题/错误.JOB总是会减少80%以上,并且会因同样的错误而失败,执行日志中也没有任何内容.经过多次迭代和研究后,我发现在加载过多的文件中,有些文件不符合为基表提供的结构(用于将数据插入分区表的表).
这里需要注意的是,每当我对分区列中的特定值执行select查询或创建静态分区时,它就可以正常运行,因为在这种情况下,错误记录被跳过.
TL; DR:检查传入的数据/文件是否存在结构不一致,因为HIVE遵循Schema-On-Read原则.