使用OpenCSVSerde在外部表中Hive null值

时间:2016-03-23 18:29:25

标签: string hive null external bigdata

我有一个带有可选列的输入文件(可能会丢失)。 在文件的顶部,使用OpenCSVSerde创建了外部配置单元表。 考虑到分隔符“/”和TAUSERID在第9位,我的专栏(TAUSER)位于第10位。

问题是以下查询不返回任何行:

select * from mbb_cics_source where tauser ='' and substr(tauserid,1,3)="W99";

通常它会返回最后一行。 那么hive如何处理缺失值? 我也试过“tauser is null”,但它不起作用。

任何帮助? 感谢

从输入文件中提取:

20160311/18:00:10.293278/18:00:10.309334/00:00:00.000234/00:00:00.016055 00:00:00.015815/00:00:00.000239/1/C563314//IXB1/3321//TPWPEA/OS0E
20160311/18:00:10.393249/18:00:10.395713/00:00:00.001179/00:00:00.002463/00:00:00.001233/00:00:00.001224/65/C66T0JC//LTBB/20087//TPAPEA/OS0E
20160311/18:00:10.416986/18:00:10.417419/00:00:00.000321/00:00:00.000432/00:00:00.000102/00:00:00.000329/0/C44P398//LTBE/72064//TPAPEB/OS0E
20160311/18:00:11.461089/18:00:11.482755/00:00:00.006002/00:00:00.021665/00:00:00.013864/00:00:00.007795/92/W990003//LTEF/33758//TPAPEC/OS0E

外部表的DDL:

use test;
drop table if exists mbb_cics_source;

CREATE external TABLE mbb_cics_source(TASTRDTS string, 
                           timep string, 
                           timep1 string,
                           ndcpu string, 
                           ndrep string,
                           ndwait string,
                           nddisp string,
                           TAIOCT string,
                           TAUSERID string,
                           TAUSER string,
                           TAPTRAN string,
                           TATASKID string,
                           TAABNCDE string,
                           TAVTMID string,
                           TASMFSID string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
   "separatorChar" = "/",
   "serialization.null.format" = ""
)  
STORED AS TEXTFILE
location '/test/mbb_cics';

0 个答案:

没有答案