Hiveでの空文字、NULLの扱い
ちょっと混乱したけど、どうもこういうことっぽい。
カラムの型 | テーブルにロードするファイルでの値 | HDFS上の値 | selectした場合の表示 | IS NULL判定結果 |
---|---|---|---|---|
int | 空文字でない文字列 | 空文字でない文字列 | NULL | true |
int | 空文字 | 空文字 | NULL | true |
string | NULLという文字列 | NULL | NULL | false |
string | 空文字 | 空文字 | 空文字 | false |
string | \N | \N | NULL | true |
int型のカラムに文字列入れるとNULLになるのはいいとして、string型のカラムをNULLにするためには\Nを使うようだ。
INSERT文で入れる場合はNULL使えばいいんだけどファイルからimportする場合は\N使うのね。ま、テスト以外ではそんなシチュエーションはないか。
ソースでいうとMetadataTypedColumnsetSerDe.defaultNullStringかな。