我运行了几个脚本,但一直都出现同样的错误。所有的脚本都是基于相同条件的多表联接。
数据以parquet格式存储。
Hive版本为1.2.1/MR。
数据以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脚本会遇到这些错误。