使用相同条件进行多表连接时,Hive 出现错误

5
我运行了几个脚本,但一直都出现同样的错误。所有的脚本都是基于相同条件的多表联接。
数据以parquet格式存储。
Hive版本为1.2.1/MR。
SELECT count(*) 
FROM   xxx.tmp_usr_1 m
INNER JOIN xxx.tmp_usr n
ON m.date_id = n.date_id AND m.end_user_id = n.end_user_id
LEFT JOIN xxx.usr_2 p
ON m.date_id = p.date_id AND m.end_user_id = p.end_user_id;

以下是错误信息:

2017年1月22日16:47:55,Stage-1映射=54%,减少=0%,累积CPU 560.81秒 2017年1月22日16:47:56,Stage-1映射=58%,减少=0%,累积CPU 577.74秒 2017年1月22日16:47:57,Stage-1映射=100%,减少=100%,累积CPU 446.32秒 MapReduce 总累计CPU时间:7分钟26秒320毫秒 结束作业=job_1484710871657_6350并出现错误,获取调试信息......检查任务ID:task_1484710871657_6350_m_000061(等等)来自工作job_1484710871657_6350的URL: http://xxxxxxxxxx/taskdetails.jsp?jobid=job_1484710871657_6350&tipid=task_1484710871657_6350_m_000071诊断信息,用于此任务:错误:java.io.IOException: java.lang.reflect.InvocationTargetException。

我的数据包含大约20M条记录。当我尝试使用一个列(end_user_id)连接表时,我会得到相同的错误。

连接列具有相同的数据类型。通过将A作为子查询与B连接,然后再连接C可以解决此问题。

我们有许多带有相同条件的多表连接语句的SQL查询,但只有少数SQL脚本会遇到这些错误。


1
请问您能否将追踪链接的完整堆栈复制粘贴一下吗?谢谢。 - hlagos
你能否提供你的表结构和执行计划的模式? - fi11er
分享表的DDL。我怀疑其中有分区或桶。 - sandeep rawat
1个回答

2

确保所有表格中匹配的列数据类型相同


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接