2013-10-21 58 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' = ''); 
相关问题