使用opencsvserde在外部表中设置空值

xmjla07d  于 2021-06-26  发布在  Hive
关注(0)|答案(0)|浏览(240)

我有一个带有可选列的输入文件(可能丢失)。在文件的顶部,使用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

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

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题