Amazon Ion Hive SerDe - Amazon Athena

Amazon Ion Hive SerDe

Amazon Ion Hive SerDe を使用すると、Amazon Ion 形式で保存されているデータをクエリできます。Amazon Ion は、リッチタイプで自己記述型のオープンソースのデータ形式です。Amazon Ion 形式は、Amazon Quantum Ledger Database (Amazon QLDB) やオープンソースの SQL クエリ言語である PartiQL などのサービスで使用されています。

Amazon Ion には、交換可能なバイナリ形式とテキスト形式があります。この機能は、テキストの使いやすさとバイナリエンコードの効率性を兼ね備えています。

Athena から Amazon Ion データをクエリするには、Amazon Ion Hive SerDe を使用できます。これにより、Amazon Ion データがシリアル化および逆シリアル化されます。逆シリアル化では、Amazon Ion データをクエリしたり、データを読み取って Parquet や ORC など別の形式に書き出したりできます。シリアル化では、CREATE 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 データセットをクエリする場合や、改行文字で行のフィールドを分割する場合に便利です。

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 にシリアル化する場合は、マップキーのタイプを STRINGVARCHARCHAR のいずれかにします。Hive では任意のプリミティブデータ型をマップキーとして使用できますが、Amazon Ion のシンボルは文字列型にする必要があります。

  • 共用体型 – Athena は、現時点では Hive 共用体型をサポートしていません。