Linux Foundation Delta Lake テーブルをクエリする
Linux Foundation Delta LakeMSCK 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 を使用するように設定する必要があります。
-
[No time travel support] (タイムトラベルのサポートなし) - Delta Lake のタイムトラベル機能を使用するクエリはサポートされていません。
-
[Read only] (読み込み専用) -
UPDATE
、INSERT
または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 TABLE
、SHOW COLUMNS
、SHOW TBLPROPERTIES
、SHOW PARTITIONS
、SHOW 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
クエリを実行すると、引き続きすべてのオブジェクトが返されます。
Delta Lake のバージョニングと Athena
Athena は、Delta Lake ドキュメントに記載されているバージョニング
-
リーダーバージョン – すべての Delta Lake テーブルにはリーダーバージョンがあります。現在、これは 1~3 の数値です。Athena がサポートしていないリーダーバージョンのテーブルを含むクエリは失敗します。
-
テーブル機能 – すべての Delta Lake テーブルは、リーダー/ライター機能のセットを宣言することもできます。Athena による Delta Lake のサポートは読み取り専用であるため、テーブルライター機能の互換性は適用されません。ただし、サポートされていないテーブルリーダー機能を持つテーブルに対するクエリは失敗します。
次の表は、Athena がサポートする Delta Lake リーダーのバージョンと Delta Lake テーブルリーダーの機能を示しています。
クエリタイプ | サポートされるリーダーのバージョン | サポートされているリーダー機能 |
---|---|---|
DQL (SELECT ステートメント) | <= 3 | 列マッピング |
DDL | <= 1 | 該当しません。リーダー機能は、リーダーバージョンが 2 以上のテーブルでのみ宣言できます。 |
-
Delta Lake テーブル機能のリストについては、GitHub.com の「テーブル機能の有効な機能名
」を参照してください。 -
プロトコルバージョン別の Delta Lake 機能のリストについては、GitHub.com の「プロトコルバージョン別の機能
」を参照してください。
Athena でリーダーバージョンが 1 より大きい Delta Lake テーブルを作成するには、「Delta Lake メタデータを同期する」を参照してください。