Apache Iceberg テーブルをクエリする
Athena を利用して、Apache Iceberg テーブルに対して読み取り、タイムトラベル、書き込み、DDL クエリを実行できます。Iceberg テーブルでは、データには Apache Parquet 形式を使用し、メタストアには AWS Glue カタログを使用する必要があります。
Apache Iceberg
Apache Iceberg の詳細については、https://iceberg.apache.org/
考慮事項と制限事項
Iceberg テーブルに対する Athena のサポートには、次の考慮事項と制限があります。
-
Iceberg バージョンのサポート – Athena は Apache Iceberg バージョン 1.4.2 をサポートします。
-
AWS Glue カタログのテーブルのみ – オープンソースの Glue カタログの実装
で定義されている仕様に基づく AWS Glue カタログに対して作成された Iceberg テーブルのみが Athena でサポートされています。 -
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 までご連絡ください。 -
AWS Lake Formation でサポートされていない TTF 管理コマンド — Lake Formation を使用して Apache Iceberg、Apache Hudi、Linux Foundation Delta Lake などのトランザクションテーブル形式 (TTF) の読み取りアクセス権限を管理できますが、Lake Formation を使用して
VACUUM
、MERGE
、UPDATE
、OPTIMIZE
など、これらのテーブル形式を使用する操作の権限を管理することはできません。Lake Formation と Athena の統合の詳細については、「AWS Lake Formation 開発者ガイド」の「Amazon Athena での AWS Lake Formation の使用」を参照してください。 -
ネストされたフィールドによるパーティション分割 — ネストされたフィールドによるパーティション分割はサポートされていません。
これを実行しようとすると、「
.NOT_SUPPORTED: Partitioning by nested field is unsupported:
column_namenested_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