String 使用OpenCSVSerde在外部表中配置单元空值

String 使用OpenCSVSerde在外部表中配置单元空值,string,hive,null,external,bigdata,String,Hive,Null,External,Bigdata,我有一个带有可选列的输入文件(可能丢失)。 在该文件的顶部,使用OpenCSVSerde创建了一个外部配置单元表。 考虑到分隔符“/”和第9位的TAUSERID,我的列(TAUSER)位于第10位 问题是以下查询不返回任何行: select * from mbb_cics_source where tauser ='' and substr(tauserid,1,3)="W99"; 通常它返回最后一行。 那么,配置单元如何处理缺少的值呢? 我也试过“tauser为空”,但不起作用 有什么帮助吗

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

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

select * from mbb_cics_source where tauser ='' and substr(tauserid,1,3)="W99";
通常它返回最后一行。 那么,配置单元如何处理缺少的值呢? 我也试过“tauser为空”,但不起作用

有什么帮助吗? 谢谢

从输入文件中提取:

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
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';
外部表的DDL:

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
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';