Apache Iceberg テーブルの使用 - Amazon Athena

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Apache Iceberg テーブルの使用

Athena は、データに Apache Parquet 形式を使用し、メタストアに AWS Glue カタログを使用する Apache Iceberg テーブルの読み取り、タイムトラベル、書き込み、DDL クエリをサポートしています。

Apache Iceberg は、非常に大規模な分析データセット用のオープンテーブル形式です。Iceberg は、大量のファイルのコレクションをテーブルとして管理し、レコードレベルの挿入、更新、削除、タイムトラベルクエリなどの最新の分析データレイクオペレーションをサポートします。Iceberg の仕様では、スキーマやパーティションの進化などのテーブル進化をシームレスに行うことが可能であり、Amazon S3 での使用に最適化して設計されています。Iceberg は、同時書き込みシナリオでのデータの正確性の保証にも役立ちます。

Apache Iceberg の詳細については、https://iceberg.apache.org/ を参照してください。

考慮事項と制約事項

Athena での Iceberg テーブルのサポートには、次の制限があります。

  • AWS Glue カタログを含むテーブルのみ – Athena では、オープンソースのグルー AWS Glue カタログ実装で定義された仕様に基づいてカタログに対して作成された Iceberg テーブルのみがサポートされています。 https://iceberg.apache.org/docs/latest/aws/#glue-catalog

  • によるテーブルロックのサポート AWS Glue のみ – プラグインのカスタムロックをサポートするオープンソースの Glue カタログ実装とは異なり、Athena は AWS Glue オプティミスティックロックのみをサポートします。Athena を使用して他のロックが実装されている Iceberg テーブルを変更すると、データが失われ、トランザクションが中断する可能性があります。

  • サポートされているファイル形式 - 次の表に示すように、Athena での Iceberg ファイル形式のサポートは、Athena エンジンのバージョンによって異なります。

    Athena エンジンバージョン Parquet ORC Avro
    2 はい いいえ いいえ
    3 はい はい はい
  • Iceberg v2 テーブル – Athena は、Iceberg v2 テーブルを作成し、操作します。v1 テーブルと v2 テーブルの違いについては、Apache Iceberg ドキュメントの「形式バージョンの変更」を参照してください。

  • タイムゾーンのない時刻型の表示 – タイムゾーンのない時刻型とタイムスタンプ型は UTC で表示されます。時刻の列のフィルター式でタイムゾーンが指定されていない場合は、UTC が使用されます。

  • タイムスタンプ関連のデータの精度 – Iceberg はタイムスタンプデータ型について、マイクロ秒精度をサポートしていますが、Athena は読み込みと書き込みの両方でタイムスタンプに対してミリ秒の精度しかサポートしていません。手動圧縮オペレーション中に書き換えられるデータについて、Athena は、時間関連の列でミリ秒の精度しか保持しません。

  • サポートされていないオペレーション - Iceberg テーブルに対して次の Athena オペレーションはサポートされていません。

  • ビュー - ビューの使用 で説明されているように Athena ビューを作成する場合に CREATE VIEW を使用します。Iceberg ビュー仕様を使用してビューを作成することに興味がある場合は、athena-feedback@amazon.com までご連絡ください。

  • でサポートされていない TTF 管理コマンド AWS Lake Formation – Lake Formation を使用して Apache Iceberg、Apache Hudi、Linux Foundation Delta Lake などの TransactionTable 形式 (TTFs) の読み取りアクセス許可を管理できますが、Lake Formation を使用して、OPTIMIZEこれらのテーブル形式で VACUUMMERGEUPDATEまたは などのオペレーションの許可を管理することはできません。Lake Formation と Athena の統合の詳細については、「 AWS Lake Formation デベロッパーガイド」の「Using AWS Lake Formation with Amazon Athena」を参照してください。

  • ネストされたフィールドによるパーティション分割 — ネストされたフィールドによるパーティション分割はサポートされていません。これを実行しようとすると、「 NOT_SUPPORTED: Partitioning by nested field is unsupported: column_name.nested_field_name」(未サポート: ネストされたフィールドによるパーティション分割はサポートされていません: column_name.nested_field_name) というメッセージが表示されます。

  • S3 Glacier オブジェクトのスキップはサポートされていません — Apache Iceberg テーブル内のオブジェクトが Amazon S3 Glacier ストレージクラスにある場合、read_restored_glacier_objects テーブルプロパティを false に設定しても効果はありません。

    例えば、次のコマンドを実行したとします。

    ALTER TABLE table_name SET TBLPROPERTIES ('read_restored_glacier_objects' = 'false')

    Iceberg および Delta Lake テーブルでは、コマンドは「サポートされていないテーブルプロパティキー: read_restored_glacier_objects」というエラーを生成します。Hudi テーブルでは、ALTER TABLE コマンドはエラーを発生しませんが、Amazon S3 Glacier オブジェクトはまだスキップされません。ALTER TABLE コマンドの後に SELECT クエリを実行すると、引き続きすべてのオブジェクトが返されます。

Athena でサポートしてほしい機能につきましては、athena-feedback@amazon.com までご意見をお寄せください。