使用 Apache Iceberg 資料表 - Amazon Athena

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

使用 Apache Iceberg 資料表

Athena 支援 Apache 冰山資料表的讀取、時間旅行、寫入和 DDL 查詢,這些資料表使用 Apache 拼花格式處理資料及其中繼存放區的 AWS Glue 目錄。

Apache Iceberg 是開放式的資料表格式,專用於非常大型的分析資料集。Iceberg 以管理資料表的方式來管理大量的檔案集合並支援新型的分析資料湖操作,如記錄層級的插入、更新、刪除和時間歷程查詢。Iceberg 規格可讓資料表的結構描述和分割區等變化順暢無礙,並專為最佳化 Amazon S3 的使用所設計。Iceberg 也有助於在並行寫入的情況下保證資料的正確性。

如需 Apache Iceberg 的相關詳細資訊,請參閱 https://iceberg.apache.org/

考量與限制

Athena 對冰山資料表的支援有下列考量和限制:

  • 支持冰山版本-Athena 支持阿帕奇冰山版本 1.4.2。

  • 僅含 AWS Glue 目錄的表格 — Athena 僅支援根據開放原始碼膠水 AWS Glue 目錄實作所定義的規格,針對目錄建立的 Iceberg 表格。

  • AWS Glue 僅支援表格鎖定 — 與支援外掛程式自訂鎖定的開放原始碼 Glue 目錄實作不同,Athena 僅支援 AWS Glue 樂觀鎖定。使用 Athena 修改具有任何其他鎖定實作的 Iceberg 資料表將導致潛在的資料遺失和交易中斷。

  • 支援的檔案格式 – Athena 中的 Iceberg 檔案格式支援視 Athena 引擎版本耳釘,如下表所示。

    Athena 殷勤版本 Parquet ORC Avro
    2
    3
  • Iceberg v2 資料表 – Athena 只能建立及操作 Iceberg v2 資料表。有關 v1 和 v2 資料表之間的區別,請參閱 Apache Iceberg 文件中的格式版本變更

  • 顯示不含時區的時間類型 – 以世界協調時間 (UTC) 顯示不含時區類型的時間和時間戳記。如果在時間資料欄的篩選條件表達式中未指定時區,則使用世界協調時間 (UTC)。

  • 與時間戳記相關的資料精確度 – 雖然 Iceberg 支持時間戳記資料類型的精度達到微秒,但 Athena 僅在讀取和寫入的時間戳記中支持達毫秒的精度。針對在手動壓縮操作過程中重寫的時間相關資料欄中的資料,Athena 僅保留毫秒精度。

  • 不支援的操作 – Iceberg 資料表不支援以下 Athena 操作。

  • Views (檢視) – 使用 CREATE VIEW 建立 Athena 檢視,如 使用檢視 中所述。如果您有興趣使用 Iceberg 檢視規格來建立檢視,請聯絡 athena-feedback@amazon.com

  • 中不支援 TTF 管理命令 AWS Lake Formation — 雖然您可以使用 Lake Formation 來管理 TransactionTable 格式 (TTF) 的讀取存取權限,例如 Apache 冰山、Apache Hudi 和 Linux 基金會三角洲湖,但您無法使用 Lake Formation 來管理作業的權限,例如 VACUUMMERGEUPDATE或使OPTIMIZE用這些表格格式。如需有關 Lake Formation 與雅典娜整合的詳細資訊,請參閱AWS Lake Formation 開發人員指南中的AWS Lake Formation 與 Amazon Athena 搭配使用

  • 依巢狀欄位分割 – 不支援依巢狀欄位分割。嘗試這樣做會產生訊息 NOT_SUPPORTED:不支援依巢狀欄位分割:column_name.nested_field_name

  • 略過不支援的 S3 Glacier 物件 – 如果 Apache Iceberg 資料表中的物件位於 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-feedback@amazon.com