我对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;
结果:-
query id=cloudera\u 20170911030505\u 93378edb-f8b8-45d0-9141-3fe065211f3d total jobs=1失败:执行错误,从org.apache.hadoop.hive.ql.exec.mr.mapredlocaltask返回代码1
因为我是新来的配置单元从sql建议我如何解决这个错误?任何帮助都将不胜感激。
2条答案
按热度按时间rggaifut1#
设置hive.auto.convert.join=false;解决了我的问题。。
zaq34kh62#
查询:
从employees t1中选择employees.name作为employee\u name,选择departments.name作为department\u name
在t1.departmentid=t2.id上加入部门t2;
版本0.13之前的配置单元不支持主键概念。这一点已在稍后的hive版本中引入。所以,我们需要注意的是,列是存在的,如果列中存在重复项,它将创建多个记录。如果您想要一些其他的用例,您可以尝试使用left-outer-join、right-outer-join和full-join。使用交叉连接时要小心。
如果错误仍然存在,请发送有关所用表架构的详细信息。可以使用show create table db\u name.table\u name查看完整的架构。