查詢 Linux 基礎三角洲湖表 - Amazon Athena

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

查詢 Linux 基礎三角洲湖表

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

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

考量與限制

Athena 的三角洲湖泊支援有下列考量和限制:

  • 具有的表 AWS Glue 僅限目錄 — 原生 Delta 湖支援只有透過以下項目註冊的表格才支援 AWS Glue。 如果您有已在其他中繼存放區註冊的 Delta Lake 表格,您仍然可以保留它並將其視為您的主要中繼存放區。由於 Delta Lake 中繼資料儲存在檔案系統 (例如,Amazon S3) 而非中繼存放區中,因此 Athena 只需要位置屬性 AWS Glue 從您的三角洲湖表中讀取。

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

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

  • 唯讀 — 撰寫UPDATEINSERT、或不支援DELETE的DML陳述式。

  • L@@ ake Formation 支持-湖泊形成集成可用於 Delta Lake 表,其架構與其模式同步 AWS Glue。 如需詳細資訊,請參閱使用 AWS Lake Formation 與 Amazon Athena 設置三角洲湖表的許可 AWS Lake Formation 開發人員指南

  • 有限DDL支援 — 支援下列DDL陳述式:CREATE EXTERNAL TABLESHOW COLUMNSSHOW TBLPROPERTIESSHOW 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 查詢。

三角洲湖版本和 Athena

Athena 不使用三角洲湖文件中列出的版本控制。若要判斷您的 Delta Lake 表格是否與 Athena 相容,請考慮下列兩個特性:

  • 閱讀器版本 — 每個三角洲湖表都有一個閱讀器版本。目前,這是一個介於 1 和 3 之間的數字。如果查詢包含 Athena 不支援的讀取器版本的資料表,則會失敗。

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

下表顯示 Athena 支援的 Delta 湖讀取器版本和 Delta 湖桌面讀取器功能。

查詢類型 支援的閱讀器版 支援的讀卡機功
DQL(SELECT陳述) 小於等於 3 列映射 timestampNtz刪除向量
DDL <= 1 不適用。Reader 功能只能在讀取器版本為 2 或更高版本的表格上宣告。

若要在 Athena 建立讀取器版本大於 1 的 Delta Lake 桌子,請參閱同步處理三角洲湖元