Hive解决方案选择/处理空字符串为NULL

时间:2017-07-14 02:20:44

标签: hadoop hive

我有一个带有csv数据的Hive外部表。某些字符串字段的值为“null”。现在,我想选择数据并以ORC格式插入到其他表中,查询类似'select * from first insert into second'。 我想用实际的NULL值替换字符串'null'。

一个解决方案可以用空白替换'null'并设计我的表以将空白视为null。这可能有用。但是,如果数据中存在任何空白值,那么这些值也将被视为NULL。

我想到的另一点是,表中有大量具有此类字符串的列。因此,如果解决方案需要选择列并执行某些操作;我将不得不写一个很长的查询。但如果没有其他选择,那就可以做到。

请提出解决方案。

2 个答案:

答案 0 :(得分:3)

您需要做的就是更改外部表,以便将SELECT <your columns> FROM <your table> WHERE <some condition>;字符串视为NULL

tmp_dt <- data.table(grp = c(1, 1, 1, 2), x = runif(4))

答案 1 :(得分:2)

最新版本的Hive支持标准NULLIF()功能。如果您使用的是insert,那么您应该列出列:

insert into second(col1, col2, col3, . . .)
    select col1, nullif(col2, 'null'), col3, . . .
    from first;