Hive 配置单元中的空指针异常

Hive 配置单元中的空指针异常,hive,bigsql,Hive,Bigsql,我能够从配置单元提示符成功执行以下查询 SELECT * FROM DB1.TABLE1; 但每当我尝试执行以下任何其他查询时: SELECT COL1 FROM DB1.TABLE1 WHERE PARTITION_COL = 201211; java.io.IOException: java.io.IOException: java.lang.NullPointerException at org.apache.hadoop.hive.io.HiveIOExceptionHan

我能够从配置单元提示符成功执行以下查询

SELECT * FROM DB1.TABLE1;
但每当我尝试执行以下任何其他查询时:

SELECT COL1 FROM DB1.TABLE1 WHERE PARTITION_COL = 201211; 

java.io.IOException: java.io.IOException: java.lang.NullPointerException
    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:304)
    at org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileRecordReader.next(HadoopShimsSecure.java:220)
    at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.moveToNext(MapTask.java:234)
    at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.next(MapTask.java:214)
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:48)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:434)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)
    at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
    at java.security.AccessController.doPrivileged(AccessController.java:366)
    at javax.security.auth.Subject.doAs(Subject.java:572)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1502)
    at org.apache.hadoop.mapred.Child.main(Child.java:249)
Caused by: java.io.IOException: java.lang.NullPointerException
    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:344)
    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:122)
    at org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileRecordReader.doNextWithExceptionHandler(HadoopShimsSecure.java:302)
    ... 11 more
Caused by: java.lang.NullPointerException
    at parquet.hive.MapredParquetInputFormat$RecordReaderWrapper.next(MapredParquetInputFormat.java:303)
    at parquet.hive.MapredParquetInputFormat$RecordReaderWrapper.next(MapredParquetInputFormat.java:199)
    at org.apache.hadoop.hive.ql.io.HiveContextAwareRecordReader.doNext(HiveContextAwareRecordReader.java:339)
    ... 15 more
该表是在IBMBigSQL环境中使用下面的DDL语句创建的

CREATE HADOOP TABLE DB1.TABLE1
(
 COL1 BIGINT NOT NULL,
 COL2 INTEGER NOT NULL,
 COL3 INTEGER NOT NULL,
 COL4 VARCHAR(12096),
 COL5 VARCHAR(12096),
 COL6 VARCHAR(510),
 COL7 VARCHAR(510),
 COL8 VARCHAR(6048),
 COL9 VARCHAR(32)
)
PARTITIONED BY (PARTITION_COL INTEGER)
STORED AS PARQUETFILE;

您是否尝试过使用
从DB1.TABLE1中选择COL1,其中PARTITION_COL='201211'其中partitin列在单四分之一中提到…同一个空指针异常,partition列在单引号中
从DB1.TABLE1中选择COL1,其中PARTITION_COL='201211'
在这种情况下怀疑列数据有问题,正常情况下,查询值和当前值之间的数据类型dnt match将发生空指针异常,您是否尝试过一些示例数据。正如您提到的,分区Col是INTEGER,我相信您可以使用BIGINT更改数据类型,然后尝试查询。我使用SQL
selectcol1从DB1.TABLE1中选择了一行,其中PARTITION_COL=和SUBSTR(COL1,1,8)IN()和COL2=和COL3=此选择返回数据成功下一步我在BIGSQL中创建了一个单列表
创建HADOOP表NEW1(COL1 BIGINT)存储为PARQUETFILE已尝试使用
从DB1.TABLE1中选择COL1,其中PARTITION_COL='201211'其中partitin列在单四分之一中提到…同一个空指针异常,partition列在单引号中
从DB1.TABLE1中选择COL1,其中PARTITION_COL='201211'
在这种情况下怀疑列数据有问题,正常情况下,查询值和当前值之间的数据类型dnt match将发生空指针异常,您是否尝试过一些示例数据。正如您提到的,分区Col是INTEGER,我相信您可以使用BIGINT更改数据类型,然后尝试查询。我使用SQL
selectcol1从DB1.TABLE1中选择了一行,其中PARTITION_COL=和SUBSTR(COL1,1,8)IN()和COL2=和COL3=此选择返回数据成功下一步我在BIGSQL中创建了一个单列表
创建HADOOP表NEW1(COL1 BIGINT)存储为PARQUETFILE