我运行了几个脚本,我不断得到同样的错误。它们都是具有相同条件的多表连接。
数据存储为Parquet地板。
配置单元版本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一级map=100%,reduce=100%,累计cpu 446.32秒mapreduce累计cpu总时间:7分26秒320毫秒结束作业=作业\u 1484710871657 \u 6350作业期间出错,获取调试信息。。。检查任务id:来自作业的任务\u 1484710871657 \u 6350 \u m\u 000061(及以上)检查任务id:来自作业的任务\u 1484710871657 \u 6350 \u 000069(及以上)检查任务id:来自作业的任务\u 1484710871657 \u 6350 \u 000053(及以上)检查任务id:来自作业的任务\u 1484710871657 \u 6350 \u 000011(及以上)来自作业作业\u 1484710871657 \u 6350检查任务id:任务\u 1484710871657 \u 6350 \u 000063(及以上)来自作业\u 1484710871657 \u 6350检查任务id:任务\u 1484710871657 \u 6350 \u 000049(及以上)来自作业\u 1484710871657 \u 6350检查任务id:任务\u 1484710871657 \u 6350 \u 000052(及以上)来自作业\u 1484710871657 \u 6350失败次数最多的任务(4):-----任务id:任务\u 1484710871657 \u 6350 \u m \u 000071 url:http://x/taskdetails.jsp?jobid=job_1484710871657_6350&tipid=task_1484710871657_6350_m_000071 -----此任务的诊断消息:错误:java.io.ioexception:java.lang.reflect.invocationtargetexception atorg.apache.hadoop.hive.io.hiveioexceptionhandlerchain.HandlerRecordReaderCreationException(hiveioexceptionhandlerchain)。java:97)在org.apache.hadoop.hive.io.hiveioexceptionhandlerutil.handlerecordreadercreationexception(hiveioexceptionhandlerutil。java:57)在org.apache.hadoop.hive.shimmes.hadoopshimssecure$combinefilerecordreader.initnextrecordreader(hadoopshimssecure)。java:266)在org.apache.hadoop.hive.shimmes.hadoopshimssecure$combinefilerecordreader上。java:213)在org.apache.hadoop.hive.shimms.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)位于javax.security.auth.subject.doas(subject)的java.security.accesscontroller.doprivileged(本机方法)。java:422)在org.apache.hadoop.security.usergroupinformation.doas(usergroupinformation。java:1671)在org.apache.hadoop.mapred.yarnchild.main(yarnchild。java:158)原因:sun.reflect.nativeconstructoraccessorimpl.newinstance0(本机方法)位于sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl)。java:62)在sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl。java:45)在java.lang.reflect.constructor.newinstance(构造函数。java:422)在org.apache.hadoop.hive.shimms.hadoopshimssecure$combinefilerecordreader.initnextrecordreader(hadoopshimssecure)上。java:252) ... 11其他原因:java.lang.illegalstateexception:架构数据类型无效,找到:primitive,应为:org.apache.hadoop.hive.ql.io.parquet.read.datawriteablereadsupport.getprojectedgroupfields(datawriteablereadsupport)上的结构。java:118)位于org.apache.hadoop.hive.ql.io.parquet.read.datawriteablereadsupport.getschemabyname(datawriteablereadsupport)。java:156)在org.apache.hadoop.hive.ql.io.parquet.read.datawriteablereadsupport.init(datawriteablereadsupport)。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.CombineHiverRecordReader。java:67) ... 应用程序管理员又杀死了16个容器。按要求杀死集装箱。出口代码为143,集装箱出口代码为非零143
我的数据由大约2000万条记录组成。当我尝试用一列(最终用户id)连接表时,我得到了相同的错误。
联接列的数据类型相同。将b作为子查询连接,然后将c作为子查询连接可以解决这个问题。
我们有许多sql查询都具有相同条件的多表join语句,但是只有少数sql脚本会遇到这些错误。
1条答案
按热度按时间bzzcjhmw1#
确保所有表的匹配列数据类型都应相同