查詢 Linux Foundation Delta Lake 資料表 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

查詢 Linux Foundation Delta Lake 資料表

Linux Foundation Delta Lake 是用於大數據分析的資料表格式。您可以使用 Amazon Athena 直接讀取存放在 Amazon S3 中的 Delta Lake 資料表,而無需產生清單檔案或執行 MSCK REPAIR 陳述式。

Delta Lake 格式會儲存每個資料檔案中每個資料欄的最小值和最大值。Athena 實作會利用這項資訊來啟用述詞上的檔案略過功能,從而排除不需要的檔案。

考量與限制

Athena 中的 Delta Lake 支援有下列考量和限制:

  • 僅限目錄的資料表 AWS Glue – 原生 Delta Lake 支援僅透過向 註冊的資料表支援 AWS Glue。如果有已在其他中繼存放區註冊的 Delta Lake 資料表,則您仍然可以保留並將其視為您的主要中繼存放區。由於 Delta Lake 中繼資料存放在檔案系統中 (例如,在 Amazon S3 中) 而非中繼存放區中,Athena 只需要在 中的位置屬性, AWS Glue 即可從您的 Delta Lake 資料表中讀取。

  • V3 engine only (僅限 V3 引擎) – 只有 Athena 引擎版本 3 才支援 Delta Lake 查詢。您必須確定您建立的工作群組設定為使用 Athena 引擎版本 3。

  • No time travel support (不支援時間歷程) – 不支援使用 Delta Lake 時間歷程功能的查詢。

  • Read only (唯讀) – 不支援寫入 UPDATEINSERTDELETE 等 DML 陳述式。

  • Lake Formation 支援 – Lake Formation 可用於結構描述與 AWS Glue同步的 Delta Lake 資料表。如需詳細資訊,請參閱《 AWS Lake Formation 開發人員指南》中的使用 AWS Lake Formation 搭配 Amazon Athena設定 Delta Lake 資料表的許可

  • Limited DDL support (有限的 DDL 支援) – 支援下列 DDL 陳述式:CREATE EXTERNAL TABLESHOW COLUMNSSHOW TBLPROPERTIESSHOW PARTITIONSSHOW CREATE TABLEDESCRIBE。如需有關使用 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 資料表是否與 Athena 相容,請考慮下列兩個特性:

  • 讀取器版本 – 每個 Delta Lake 資料表都有讀取器版本。目前,這是介於 1 和 3 之間的數字。包含具有 Athena 不支援之讀取器版本的資料表的查詢將會失敗。

  • 資料表功能 – 每個 Delta Lake 資料表也可以宣告一組讀取器/寫入器功能。由於 Athena 對 Delta Lake 的支援是唯讀的,因此資料表寫入器功能相容性不適用。不過,對具有不支援資料表讀取器功能的資料表的查詢將會失敗。

下表顯示 Athena 支援的 Delta Lake 讀取器版本和 Delta Lake 資料表讀取器功能。

查詢類型 支援的讀取器版本 支援的讀取器功能
DQL (SELECT 陳述式) <= 3 資料欄映射timestampNtz刪除向量
DDL <= 1 不適用。只能對讀取器版本為 2 或更高的資料表宣告讀取器功能。

若要在 Athena 中建立讀取器版本大於 1 的 Delta Lake 資料表,請參閱 同步 Delta Lake 中繼資料