Linux Foundation Delta Lake テーブルをクエリする - Amazon Athena

Linux Foundation Delta Lake テーブルをクエリする

Linux Foundation Delta Lake は、ビッグデータ分析用のテーブル形式です。Amazon Athena を使用すると、マニフェストファイルを生成したり、MSCK REPAIR ステートメントを実行したりすることなく、Amazon S3 に保存されている Delta Lake テーブルを直接読み込むことができます。

Delta Lake 形式には、各データファイルの列ごとの最小値と最大値が格納されます。Athena の実装では、この情報を利用して述語でのファイルスキップが可能になり、不要なファイルが考慮対象から除外されます。

考慮事項と制約事項

Athena の Delta Lake サポートには、次の考慮事項と制限があります。

  • [AWS Glue カタログ付きのテーブルのみ] - Delta Lake のネイティブサポートは、AWS Glue に登録されたテーブルでのみサポートされます。別のメタストアに登録されている Delta Lake テーブルがある場合でも、それを保持してプライマリのメタストアとして扱うことができます。Delta Lake のメタデータはメタストアではなくファイルシステム (Amazon S3 など) に保存されるため、Athena では Delta Lake テーブルから読み込むには AWS Glue にある場所プロパティのみが必要です。

  • [V3 engine only] (V3 エンジンのみ) - Delta Lake クエリは Athena エンジンバージョン 3 でのみサポートされます。作成するワークグループが Athena エンジンバージョン 3 を使用するように設定する必要があります。

  • Delta Lake リーダーバージョン – 最大でバージョン 3 の Delta Lake リーダープロトコルがサポートされています。

  • 削除ベクトルのサポート – Athena は、削除ベクトルを含む Delta Lake テーブルからの読み取りをサポートしています。削除ベクトルは、Delta Lake テーブルで有効にできるストレージ最適化機能です。詳細については、Delta Lake ドキュメントの「What are deletion vectors?」を参照してください。

  • 列マッピングと timestampNtzDelta 列マッピングです。これは、Delta テーブル列と基盤となる Parquet ファイル列が異なる名前を使用できるようにし、タイムゾーンなしのタイムスタンプ (timestampNtz) がサポートされます。

  • [No time travel support] (タイムトラベルのサポートなし) - Delta Lake のタイムトラベル機能を使用するクエリはサポートされていません。

  • [Read only] (読み込み専用) - UPDATEINSERT または DELETE のような DML ステートメントの記述はサポートされていません。

  • Lake Formation サポート — Lake Formation の統合は、AWS Glueと同期したスキーマの Delta Lake テーブルに利用できます。詳細については、「AWS Lake Formation デベロッパーガイド」の「Amazon Athena での AWS Lake Formation の使用」および「Delta Lake テーブルのアクセス許可をセットアップする」を参照してください。

  • [Limited DDL support] (限定的な DDL サポート) - 次の DDL ステートメントは以下の CREATE EXTERNAL TABLESHOW COLUMNSSHOW TBLPROPERTIESSHOW PARTITIONSSHOW CREATE TABLE、および DESCRIBE をサポートしています。CREATE EXTERNAL TABLE ステートメントの使用方法については、「使用を開始する」のセクションを参照してください。

  • S3 Glacier オブジェクトのスキップはサポートされていません — Linux Foundation Delta Lake テーブルのオブジェクトが 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 クエリを実行すると、引き続きすべてのオブジェクトが返されます。