2017-04-22 80 views
3

我创建了具有数字列(如双列和字符串列)的配置单元表。我的文件包含数字和字符串列的一些NULL值。当我尝试将一个文件加载到此表中时,数值列的NULL值被替换为file中的'\ N'。我知道这是处理数值类型列的空值的hive属性,但我想阻止它或是否存在任何方式,我可以将NULL更改为其他内容而不是'\ N'。将NULL数据转换为' N'以用于配置单元中的数字列。

回答

7

默认情况下NULL值写入数据文件中为\N\N,在查询数据时数据文件被解释为NULL
这可以通过使用TBLPROPERTIES('serialization.null.format'=...)

来覆盖。
TBLPROPERTIES('serialization.null.format'='')意味着:

  • 在查询表
  • 当插入行表中,NULL值将被写入到数据文件中的数据文件的空场将被视为NULL空字段

该属性可以被声明为表创建的一部分

create table mytable (...) 
tblproperties('serialization.null.format'='') 
; 

并且可以稍后改变

alter table mytable set tblproperties('serialization.null.format'='') 
; 
相关问题