Hadoop 配置单元多表联接具有相同条件错误

Hadoop 配置单元多表联接具有相同条件错误,hadoop,hive,Hadoop,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_i

我正在运行多个脚本,并且不断出现相同的错误。它们都是具有相同条件的多表联接

数据存储为拼花地板

配置单元版本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:55208第一阶段map=54%,reduce=0%,累计CPU 560.81秒 2017-01-22 16:47:56248第一阶段map=58%,reduce=0%,累计CPU 577.74秒 2017-01-22 16:47:57290第1阶段map=100%,reduce=100%,累计CPU 446.32秒MapReduce 累计CPU总时间:7分26秒320毫秒结束作业=作业在作业期间出错,正在获取调试信息。。。检查任务ID:task_1484710871657_6350_m_000061(及以上)自job job_1484710871657_6350检查任务ID:task_1484710871657_6350_000069(及以上)自job job_1484710871657_6350检查任务ID:task_1484710871657_6350_m 000053(及以上)自job job_1484710871657_6350检查任务ID:task_1484710871657_6350(及以上)来自job job_1484710871657_6350检查任务ID:task_1484710871657_6350_m_000063(及更多)来自job job_1484710871657_6350检查任务ID:task_1484710871657_6350检查任务ID:task_1484710871657_6350_m_000052(及更多)来自job Job1484710871657_6350 失败次数最多的任务(4): -----任务ID:Task_1484710871657_6350_m_000071 网址: -----此任务的诊断消息:错误:java.io.IOException:java.lang.reflect.InvocationTargetException 位于org.apache.hadoop.hive.io.HiveIOExceptionHandlerChain.HandlerRecordReaderCreationException(HiveIOExceptionHandlerChain.java:97) 位于org.apache.hadoop.hive.io.HiveIOExceptionHandlerUtil.HandlerRecordReaderCreationException(HiveIOExceptionHandlerUtil.java:57) 在org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileRecordReader.initNextRecordReader上(HadoopShimsSecure.java:266) 在org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileRecordReader上 在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(本机方法) 位于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.parquetrecordreaderrapper.getSplit(parquetrecordreaderrapper.java:256) 位于org.apache.hadoop.hive.ql.io.parquet.read.parquetrecordreaderrapper.(parquetrecordreaderrapper.java:99) 位于org.apache.hadoop.hive.ql.io.parquet.read.parquetrecordreaderrapper.(parquetrecordreaderrapper.java:85) 位于org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat.getRecordReader(MapredParquetInputFormat.java:72) 位于org.apache.hadoop.hive.ql.io.CombineHiverRecordReader。(CombineHiverRecordReader.java:67) ... 还有16个 容器被应用程序管理员杀死。集装箱在要求时被杀死。退出代码为143,容器退出时的退出代码为非零143

我的数据由大约2000万条记录组成。当我尝试用一列(end_user_id)连接表时,我得到了相同的错误

联接列的数据类型相同。将B作为子查询连接,然后将C作为子查询连接可以解决此问题


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

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

是否可以从跟踪url粘贴完整堆栈?感谢您还可以添加表的模式和执行计划共享表的ddl。。我怀疑那里有隔板或扣板。