蜂巢加入失败 mr.MapredLocalTask
Posted
技术标签:
【中文标题】蜂巢加入失败 mr.MapredLocalTask【英文标题】:hive join failed mr.MapredLocalTask 【发布时间】:2017-09-11 10:47:18 【问题描述】:我是 HIVE 和 HADOOP 的新手,在这里我试图加入 hive 中的两个示例表,其中这些表没有任何主外键关系,只是为了练习:- 表格如下
Employees table:-
id name gender salary departmentid
1 mark male 3333 1
2 Steve male 5464 3
3 Ben male 3873 2
4 bender male 9298 1
5 fender male 654 2
departments table:-
id name location
1 IT NEW YORK
2 HR LONDON
3 PAYROLL SYDNEY
hive> select employees.name as employee_name, departments.name as department_name
> from employees
> join departments on departments.id = employees.departmentid;
结果:-
查询 ID = cloudera_20170911030505_93378edb-f8b8-45d0-9141-3fe065211f3d 工作总数 = 1 FAILED:执行错误,从 org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask 返回代码 1
因为我是 SQL 的新手,所以建议我如何解决这个错误?任何帮助,将不胜感激。
【问题讨论】:
您能否粘贴整个堆栈跟踪以提高清晰度。 查询 ID = cloudera_20170911041010_375af566-cc17-4649-b992-7a8a10685316 Total jobs = 1 FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask跨度> 已提出类似问题。请查看此链接:community.cloudera.com/t5/Web-UI-Hue-Beeswax/…。 惊讶地看到只有 2 行错误。检查您是否可以获得完整的堆栈跟踪。这将有助于指出确切的根本原因。 community.cloudera.com/t5/Web-UI-Hue-Beeswax/...。 【参考方案1】:查询:
选择employees.name 作为employee_name,departments.name 作为department_name 来自员工 T1 在 T1.departmentid=T2.id 上加入部门 T2;
Hive 到 0.13 版不支持主键概念。这已在 hive 的后续版本中引入。 因此,我们只需要注意列是否存在,如果列中存在重复,它将创建多条记录。 如果你想有一些其他的用例,你可以尝试使用左外连接、右外连接、完全连接。使用交叉连接时要小心。
如果错误仍然存在,请发送有关您使用的表架构的更多详细信息。您可以使用 show create table db_name.table_name 查看完整的架构。
【讨论】:
【参考方案2】:设置 hive.auto.convert.join=false;修复了我的问题..
【讨论】:
以上是关于蜂巢加入失败 mr.MapredLocalTask的主要内容,如果未能解决你的问题,请参考以下文章
hive-05-Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask