目前我在Amazon EMR上有一个HIVE 0.7实例。我正在尝试使用Hive 0.11在新的EMR集群上创建此实例的副本。
在我的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 :(得分:1)
Hive默认分区属性覆盖表属性。在alter语句中包含SERDE属性:
ALTER TABLE tablename ADD PARTITION (year = '2013', month = '10', day='01') SET
SERDEPROPERTIES ('serialization.null.format' = '');