我有一条类似的创建语句
创建表temp_tbl(EmpId字符串,Salary int);
我想在表中插入一个员工ID和一个空白值。
所以我要做的是
hive> select * from temp_tbl; OK 013 NULL
但预期结果是
hive> select * from temp_tbl;
OK
013 NULL ---> Blank instead of NULL
3。尝试创建具有序列化属性的表
CREATE TABLE temp_tbl (EmpId String,Salary int) TBLPROPERTIES ('serialization.null.format' = '');
那也没有将NULL值更改为空白。
相同的解决方法是什么。
答案 0 :(得分:0)
选择数据时的用例。
Select
(CASE
WHEN columnName is null THEN ''
ELSE columnName
END) as 'Result' from temp_tbl;
答案 1 :(得分:0)
在Hive中,除了字符串/ varchar / char和某些复杂类型(如数组)以外的所有类型不能为空,只能为NULL。空字符串Package Parameter
是String类型的正常值。您也可以产生空的array()(零尺寸的数组)。
一种解决方法,您可以使用数据中通常不包含的一些预定义值来表示某些特殊数值,例如-99999。或者,您可以将数字值存储在“字符串”列中,在这种情况下,您将可以在其中包含空值。但是不可能为数字类型分配(投射)空字符串,因为不允许使用这种空值。
如果尝试将空字符串分配给数字列或强制转换为数字类型,则结果将与将非数字字符串转换为数字-NULL相同(在Hive中,如果无法强制转换,则返回NULL )或使用Java获得java.lang.NumberFormatException。
答案 2 :(得分:0)
知道数据类型Int可以是NULL或整数,我会考虑如何解决该问题。