【发布时间】:2017-02-10 22:06:15
【问题描述】:
我正在运行几个脚本,但我不断收到同样的错误。它们都是具有相同条件的多表连接。
数据存储为镶木地板。
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-01-22 16:47:55,208 Stage-1 map = 54%,reduce = 0%,Cumulative CPU 560.81 sec 2017-01-22 16:47:56,248 第 1 阶段地图 = 58%,减少 = 0%,累积 CPU 577.74 秒 2017-01-22 16:47:57,290 第 1 阶段地图 = 100%,减少 = 100%,累积 CPU 446.32 秒 MapReduce Total cumulative CPU time: 7 minutes 26 seconds 320 msec Ended Job = job_1484710871657_6350 with errors Error during job, obtaining debugging information... Examining task ID: task_1484710871657_6350_m_000061 (and more) from job job_1484710871657_6350 Examining task ID: task_1484710871657_6350_m_000069 (and more) from job job_1484710871657_6350 Examining task ID: task_1484710871657_6350_m_000053 (and more) from job job_1484710871657_6350 Examining task ID: task_1484710871657_6350_m_000011 (and more) from job job_1484710871657_6350 Examining task ID: task_1484710871657_6350_m_000063 (and more) from job job_1484710871657_6350 Examining task ID: task_1484710871657_6350_m_000049 (and more) from job job_1484710871657_6350 Examining任务 ID:task_1484710871657_6350_m_000052(以及更多)来自作业 job_1484710871657_6350 失败次数最多的任务(4): -----任务ID:task_1484710871657_6350_m_000071 网址:http://xxxxxxxxxx/taskdetails.jsp?jobid=job_1484710871657_6350&tipid=task_1484710871657_6350_m_000071 ----- 此任务的诊断消息:错误:java.io.IOException: java.lang.reflect.InvocationTargetException 在 org.apache.hadoop.hive.io.HiveIOExceptionHandlerChain.handleRecordReaderCreationException(HiveIOExceptionHandlerChain.java:97) 在 org.apache.hadoop.hive.io.HiveIOExceptionHandlerUtil.handleRecordReaderCreationException(HiveIOExceptionHandlerUtil.java:57) 在 org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileRecordReader.initNextRecordReader(HadoopShimsSecure.java:266) 在 org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileRecordReader.(HadoopShimsSecure.java:213) 在 org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileInputFormatShim.getRecordReader(HadoopShimsSecure.java:333) 在 org.apache.hadoop.hive.ql.io.CombineHiveInputFormat.getRecordReader(CombineHiveInputFormat.java:719) 在 org.apache.hadoop.mapred.MapTask$TrackedRecordReader.(MapTask.java:169) 在 org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:432) 在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:343) 在 org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:422) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671) 在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) 引起:java.lang.reflect.InvocationTargetException 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:422) 在 org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileRecordReader.initNextRecordReader(HadoopShimsSecure.java:252) ... 11 更多原因:java.lang.IllegalStateException:无效模式数据类型,发现:PRIMITIVE,预期:STRUCT 在 org.apache.hadoop.hive.ql.io.parquet.read.DataWritableReadSupport.getProjectedGroupFields(DataWritableReadSupport.java:118) 在 org.apache.hadoop.hive.ql.io.parquet.read.DataWritableReadSupport.getSchemaByName(DataWritableReadSupport.java:156) 在 org.apache.hadoop.hive.ql.io.parquet.read.DataWritableReadSupport.init(DataWritableReadSupport.java:222) 在 org.apache.hadoop.hive.ql.io.parquet.read.ParquetRecordReaderWrapper.getSplit(ParquetRecordReaderWrapper.java:256) 在 org.apache.hadoop.hive.ql.io.parquet.read.ParquetRecordReaderWrapper.(ParquetRecordReaderWrapper.java:99) 在 org.apache.hadoop.hive.ql.io.parquet.read.ParquetRecordReaderWrapper.(ParquetRecordReaderWrapper.java:85) 在 org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat.getRecordReader(MapredParquetInputFormat.java:72) 在 org.apache.hadoop.hive.ql.io.CombineHiveRecordReader.(CombineHiveRecordReader.java:67) ... 16 更多 容器被 ApplicationMaster 杀死。容器应要求被杀死。退出代码为 143 容器以非零退出代码 143 退出
我的数据包含大约 2000 万条记录。当我尝试用一列 (end_user_id) 连接表时,我得到了同样的错误。
连接列是相同的数据类型。 A join B 作为子查询再join C 可以解决这个问题。
我们有很多带有相同条件的多表连接语句的 SQL 查询,但只有少数 SQL 脚本遇到这些错误。
【问题讨论】:
-
您能粘贴跟踪网址中的完整堆栈吗?谢谢
-
您是否还可以添加表的架构和执行计划
-
共享表的ddl..我怀疑那里有分区或分桶。