查詢 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 目錄的資料表 – 只有透過使用 AWS Glue 註冊的資料表才會支援原生 Delta Lake 支援。如果有已在其他中繼存放區註冊的 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 陳述式的詳細資訊,請參閱 Delta Lake 資料表入門 一節。

  • 略過不支援的 Amazon Glacier 物件 – 如果 Linux Foundation Delta Lake 資料表中的物件位於 Amazon 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 Glacier 物件仍不會略過。在 ALTER TABLE 命令繼續傳回所有物件之後執行 SELECT 查詢。

  • 加密資料表 – Athena 不支援原生讀取 CSE-KMS 加密的 Delta Lake 資料表。這包括 SELECT 陳述式和 DDL 陳述式。

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 statements) <= 3 資料欄映射timestampNtz刪除向量
DDL <= 1 不適用。讀取器功能只能在讀取器版本為 2 或更高版本時宣告。

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