web-dev-qa-db-ja.com

Hiveの数値列のNULLデータが「\ N」に変換されました。

Double列やstring列などの数値列を持つHiveテーブルを作成しました。ファイルには、数値列と文字列列の両方にNULL値が含まれています。このテーブルにファイルを読み込もうとすると、数値列のNULL値がファイル内の「\ N」に置き換えられます。これは数値タイプの列のNULL値を処理するHiveプロパティであることがわかっていますが、それを防止したいのですが、 NULLを「\ N」の代わりに別のものに変更できる方法。

8

デフォルトでは、NULL値はデータファイルに_\N_および_\N_として書き込まれ、データファイルはデータのクエリ時にNULLとして解釈されます。
これは、TBLPROPERTIES('serialization.null.format'=...)を使用してオーバーライドできます

例えば。
TBLPROPERTIES('serialization.null.format'='')は次のことを意味します。

  • テーブルをクエリすると、データファイルの空のフィールドはNULLとして扱われます
  • テーブルに行を挿入すると、NULL値が空のフィールドとしてデータファイルに書き込まれます

このプロパティは、テーブル作成の一部として宣言できます

_create table mytable (...)
tblproperties('serialization.null.format'='')
;
_

後で変更できます

_alter table mytable set tblproperties('serialization.null.format'='')
;
_