2013-10-21 102 views
1

目前,我在Amazon EMR上有一個HIVE 0.7實例。我試圖在使用Hive 0.11的新EMR羣集上創建此實例的副本。HIVE外部表 - 將空字符串設置爲NULL

在我的0.7實例中,我有一個外部表將空字符串設置爲NULL。這裏是我創建表:

CREATE EXTERNAL TABLE IF NOT EXISTS tablename 
(column1 string, 
column2 string) 
PARTITIONED BY (year STRING, month STRING, day STRING) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t' 
LINES TERMINATED BY '\n' 
TBLPROPERTIES ('serialization.null.format' = ''); 

數據添加到表是這樣的:

ALTER TABLE tablename 
ADD PARTITION (year = '2013', month = '10', day='01') 
LOCATION '/location_in_hdfs'; 

這0.7的偉大工程,但在0.11似乎並沒有被評估我的空字符串作爲NULLS。有趣的是,使用相同的數據和表定義創建一個普通表似乎將空字符串評估爲NULL。

是否有不同的方式來做到這一點與0.11的外部表?

回答

0

Hive默認分區屬性覆蓋表屬性。在您的alter語句中包含SERDE屬性:

ALTER TABLE tablename ADD PARTITION (year = '2013', month = '10', day='01') SET 
SERDEPROPERTIES ('serialization.null.format' = ''); 
相關問題