2017-04-22 78 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'='') 
; 
相關問題