Amazon Ion Hive SerDe
Amazon Ion Hive SerDe を使用すると、Amazon Ion
Amazon Ion には、交換可能なバイナリ形式とテキスト形式があります。この機能は、テキストの使いやすさとバイナリエンコードの効率性を兼ね備えています。
Athena から Amazon Ion データをクエリするには、Amazon Ion Hive SerDeCREATE TABLE AS
SELECT
(CTAS) や INSERT INTO
クエリを使用して既存のテーブルからデータをコピーすることで、Amazon Ion 形式のデータを生成できます。
注記
Amazon Ion は JSON のスーパーセットであるため、Amazon Ion Hive SerDe を使用して Amazon Ion 以外の JSON データセットをクエリできます。他の JSON SerDe ライブラリとは異なり、Amazon Ion SerDe ではデータの各行が 1 行にあるとは想定していません。この機能は、「プリティ印刷」形式の JSON データセットをクエリする場合や、改行文字で行のフィールドを分割する場合に便利です。
Athena で Amazon Ion をクエリする方法の追加情報および例については、「Analyze Amazon Ion datasets using Amazon Athena
シリアル化ライブラリ名
Amazon Ion SerDe のシリアル化ライブラリ名は com.amazon.ionhiveserde.IonHiveSerDe
です。ソースコード情報については、GitHub.com の「Amazon Ion Hive SerDe
考慮事項と制限事項
-
重複フィールド – Amazon Ion 構造体は順序付けされ、重複フィールドに対応していますが、Hive の
STRUCT<>
とMAP<>
はそうではありません。そのため、Amazon Ion 構造体から重複フィールドを逆シリアル化すると、ある 1 つの値が非決定的に選択され、それ以外の値は無視されます。 -
外部シンボルテーブルはサポート対象外 – 現時点で、Athena は外部シンボルテーブルや以下の Amazon Ion Hive SerDe プロパティをサポートしていません。
-
ion.catalog.class
-
ion.catalog.file
-
ion.catalog.url
-
ion.symbol_table_imports
-
-
ファイル拡張子 – Amazon Ion は、ファイル拡張子に基づいて、Amazon Ion ファイルの逆シリアル化に使用する圧縮コーデックを決定します。そのため、圧縮ファイルのファイル拡張子は、使用する圧縮アルゴリズムに対応したものである必要があります。例えば、ZSTD を使用する場合、対応するファイルの拡張子は
.zst
である必要があります。 -
同種データ – Amazon Ion では、特定のフィールドの値に使用できるデータ型に制限がありません。例えば、2 つの異なる Amazon Ion ドキュメントに同じ名前のフィールドがある場合、それぞれのフィールドに異なるデータ型を使用できます。ただし、Hive はスキーマを使用するため、1 つの Hive 列に抽出する値はすべて同じデータ型にする必要があります。
-
マップキーのタイプの制限 – 別の形式のデータを Amazon Ion にシリアル化する場合は、マップキーのタイプを
STRING
、VARCHAR
、CHAR
のいずれかにします。Hive では任意のプリミティブデータ型をマップキーとして使用できますが、Amazon Ion のシンボルは文字列型にする必要があります。 -
共用体型 – Athena は、現時点では Hive 共用体型
をサポートしていません。 -
倍精度浮動小数点データ型 — Amazon Ion は現在、
double
データ型をサポートしていません。