我对以下语句的理解是,如果在hive列中插入空字符串或空字符串,则将其视为null。
TBLPROPERTIES('serialization.null.format'=''
为了测试我已经创建了一个表并向字段3插入''的功能。当我在field3上查询空值时,没有符合该标准的行。
我的理解是将空字符串设为null吗?
CREATE TABLE CDR
(
field1 string,
field2 string,
field3 string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
**TBLPROPERTIES('serialization.null.format'='');**
insert overwrite table emmtest.cdr select **field1,field2,''** from emmtest.cdr_non_orc;
select * from emmtest.cdr where **field3 is null;**
最后一个语句没有返回任何行。但我希望返回所有行,因为field3中有空字符串。
答案 0 :(得分:4)
TBLPROPERTIES('serialization.null.format'='')
表示以下内容:
你正在做别的事情 -
您正在从查询中向表中插入空字符串
它被“按原样”处理 - 一个空字符串。
<强>的bash 强>
hdfs dfs -mkdir /user/hive/warehouse/mytable
echo Hello,,World | hdfs dfs -put - /user/hive/warehouse/mytable/data.txt
<强>蜂房强>
create table mytable (s1 string,s2 string,s3 string)
row format delimited
fields terminated by ','
;
hive> select * from mytable;
OK
s1 s2 s3
Hello World
hive> alter table mytable set tblproperties ('serialization.null.format'='');
OK
hive> select * from mytable;
OK
s1 s2 s3
Hello NULL World
答案 1 :(得分:1)
您可以在Hive Query属性中使用以下内容:
NULL DEFINED AS ''
或引号内的任何字符。