gpt4 book ai didi

hadoop - 空字符串在 Hive 中不被视为 null

转载 作者:可可西里 更新时间:2023-11-01 14:44:20 25 4
gpt4 key购买 nike

我对下面语句的理解是,如果将空白或空字符串插入到 hive 列中,它将被视为 null。

TBLPROPERTIES('serialization.null.format'=''

为了测试功能,我创建了一个表并将“”插入到字段 3 中。当我在字段 3 上查询空值时,没有符合该条件的行。

我对将空白字符串设为 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 中有空白字符串。

最佳答案

TBLPROPERTIES('serialization.null.format'='') 表示如下:

  • 查询表时数据文件中的空字段将被视为NULL
  • 向表中插入行时,NULL 值将作为空字段写入数据文件

你在做别的事情-
您正在从查询中向表中插入一个空字符串。
它被“按原样”处理 - 一个空字符串。

演示

狂欢

hdfs dfs -mkdir /user/hive/warehouse/mytable
echo Hello,,World | hdfs dfs -put - /user/hive/warehouse/mytable/data.txt

hive

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

关于hadoop - 空字符串在 Hive 中不被视为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43263038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com