現在、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 の外部テーブルでこれを行う別の方法はありますか?