我正在尝试从另一个表(表 1)在 Hive 中创建一个表(表 2)。我试图排除某些具有 NULL 值的行并尝试了以下条件。
insert overwrite table table2 partition (date = '2013-06-01')
select column1, column 2....
from table1
where column1 is not NULL or column1 <> '';
但是,当我使用新表尝试以下查询时,我得到 300 多行带有 NULL 值的行:
select count(*) from table2 where column1 is NULL;
有人可以指出导致这些 NULL 值的原因吗?
谢谢你。
拉维
最佳答案
首先——我不认为 column1 is not NULL or column1 <> ''
很有道理。也许你想写 column1 is not NULL and column1 <> ''
( AND
而不是 OR
)?
其次——由于 Hive 对表定义的“读取模式”方法,无效值将被转换为 NULL
当你阅读它们时。因此,例如,如果 table1.column1
类型为 STRING
和 table2.column1
类型为 INT
,那么我不认为 table1.column1 IS NOT NULL
足以保证table2.column1 IS NOT NULL
. (不过,我不确定这一点。)
关于null - 在 Hive 中处理 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18432925/