分享

使用hive查询出现的问题

levycui 发表于 2015-9-15 19:30:52 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 3 24342
使用hive查询出现问题,如下:
库data: 表:ocount 数据量600W左右

表结构
hive> desc ocount;
OK
count_id              string                                      
user_id               string                                      
count_type            string                                                                        
dt                    string                                      
                 
dt分组查询
hive> select * from data.ocount group by dt;      
20150908
20150909
20150910
20150911
20150913
20150914



我想统计count_type = 'ww'的数量。

1、可以正常跑出来数据:
select count(distinct count_id) from data.ocount where dt = 20150908 or dt = 20150909 or dt = 20150910 or dt = 20150911 or dt = 20150913 or dt = 20150914  and count_type = 'ww';


2、使用(其实跟上边的功能一样的)
select count(distinct count_id) from data.ocount where count_type = 'ww';

就会报错:
Diagnostic Messages for this Task:
Error: java.io.IOException: java.io.IOException: java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException: 8
        at org.apache.hadoop.hive.io.HiveIOExceptionHandlerChain.handleRecordReaderNextException(HiveIOExceptionHandlerChain.java:121)
        at org.apache.hadoop.hive.io.HiveIOExceptionHandlerUtil.handleRecordReaderNextException(HiveIOExceptionHandlerUtil.java:77)
        at org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileRecordReader.doNextWithExceptionHandler(HadoopShimsSecure.java:273)
        at org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileRecordReader.next(HadoopShimsSecure.java:183)
        at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.moveToNext(MapTask.java:198)
        at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.next(MapTask.java:184)
        at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:52)
        at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:430)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:342)
        at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1594)
        at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:163)
Caused by: java.io.IOException: java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException: 8
        at org.apache.hadoop.hive.io.HiveIOExceptionHandlerChain.handleRecordReaderNextException(HiveIOExceptionHandlerChain.java:121)
        at org.apache.hadoop.hive.io.HiveIOExceptionHandlerUtil.handleRecordReaderNextException(HiveIOExceptionHandlerUtil.java:77)
        at org.apache.hadoop.hive.ql.io.HiveContextAwareRecordReader.doNext(HiveContextAwareRecordReader.java:352)
        at org.apache.hadoop.hive.ql.io.CombineHiveRecordReader.doNext(CombineHiveRecordReader.java:101)
        at org.apache.hadoop.hive.ql.io.CombineHiveRecordReader.doNext(CombineHiveRecordReader.java:41)
        at org.apache.hadoop.hive.ql.io.HiveContextAwareRecordReader.next(HiveContextAwareRecordReader.java:115)
        at org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileRecordReader.doNextWithExceptionHandler(HadoopShimsSecure.java:271)
        ... 11 more
Caused by: java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException: 8
        at org.apache.hadoop.hive.ql.io.orc.VectorizedOrcInputFormat$VectorizedOrcRecordReader.next(VectorizedOrcInputFormat.java:95)
        at org.apache.hadoop.hive.ql.io.orc.VectorizedOrcInputFormat$VectorizedOrcRecordReader.next(VectorizedOrcInputFormat.java:49)
        at org.apache.hadoop.hive.ql.io.HiveContextAwareRecordReader.doNext(HiveContextAwareRecordReader.java:347)
        ... 15 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: 8
        at org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatchCtx.addPartitionColsToBatch(VectorizedRowBatchCtx.java:565)
        at org.apache.hadoop.hive.ql.io.orc.VectorizedOrcInputFormat$VectorizedOrcRecordReader.next(VectorizedOrcInputFormat.java:90)
        ... 17 more

Container killed by the ApplicationMaster.
Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143


FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
MapReduce Jobs Launched:
Stage-Stage-1: Map: 52  Reduce: 3   Cumulative CPU: 76.47 sec   HDFS Read: 13744249 HDFS Write: 0 FAIL
Total MapReduce CPU Time Spent: 1 minutes 16 seconds 470 msec

求教。

已有(3)人评论

跳转到指定楼层
NEOGX 发表于 2015-9-15 20:33:26
取前10条试试。
可能返回值超出了hive最大值,导致数组越界
回复

使用道具 举报

levycui 发表于 2015-9-15 21:38:50
NEOGX 发表于 2015-9-15 20:33
取前10条试试。
可能返回值超出了hive最大值,导致数组越界

limit 10 是没有问题的。第一个语句也是查询所有值,hive最大值多大呢?

回复

使用道具 举报

levycui 发表于 2015-9-18 08:42:00
最后开发人员修改了这个ww列的存储类型,就正常了,至于更改细节没有告知。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条