使用 Iceberg 資料表格式規格第 3 版 - AWS 方案指引

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

使用 Iceberg 資料表格式規格第 3 版

Apache Iceberg 資料表格式規格的最新版本是第 3 版。此版本推出進階功能,可建置 PB 級資料湖,以改善效能並降低營運開銷。它解決了第 2 版遇到的常見效能瓶頸,特別是在批次更新和合規刪除操作方面。

AWS 支援 Iceberg 第 3 版規格中定義的刪除向量和資料列歷程。這些功能可在下列 Apache Spark 上使用 AWS 服務。

AWS 服務 第 3 版支援

Amazon EMR for Apache Spark

Amazon EMR 7.12 版及更新版本

AWS Glue

AWS Glue:Iceberg REST API、資料表維護

Amazon SageMaker Unified Studio 筆記本

Amazon S3 資料表:Iceberg REST API資料表維護

Amazon Athena (Trino)

第 3 版的主要功能

刪除向量會以儲存為 Puffin 檔案的有效二進位格式取代第 2 版中使用的位置刪除檔案。這可消除隨機批次更新和一般資料保護法規 (GDPR) 合規刪除的寫入放大,並大幅降低維護新資料的額外負荷。處理高頻率更新的組織將立即改善寫入效能,並從較少的小型檔案降低儲存成本。

資料列歷程可在資料列層級進行精確的變更追蹤。您的下游系統可以逐步處理變更,加速資料管道並降低變更資料擷取 (CDC) 工作流程的運算成本。此內建功能不需要自訂變更追蹤實作。

版本相容性

第 3 版維持與第 2 版資料表的回溯相容性。AWS 服務同時支援第 2 版和第 3 版資料表,因此您可以:

  • 跨第 2 版和第 3 版資料表執行查詢。

  • 將現有的第 2 版資料表升級至第 3 版,無需重新寫入資料。

  • 跨越第 2 版和第 3 版快照的執行時間歷程查詢。

  • 跨資料表版本使用結構描述演變和隱藏分割。

第 3 版入門

先決條件

使用第 3 版資料表之前,請確定您有:

  • AWS 帳戶 具有適當 AWS Identity and Access Management (IAM) 許可的 。

  • 存取一或多個 AWS 分析服務 (Amazon EMR AWS Glue、Amazon SageMaker Unified Studio 筆記本或 Amazon S3 Tables)。

  • 用於儲存資料表資料和中繼資料的 S3 儲存貯體。

  • 如果您要建置自己的 Iceberg 基礎設施,可使用資料表儲存貯體開始使用 Amazon S3 Tables 或一般用途 S3 儲存貯體。

  • 已設定的 AWS Glue 目錄。

建立第 3 版資料表

建立新的資料表

若要建立新的 Iceberg 第 3 版資料表,請將format-version資料表屬性設定為 3。

使用 Spark SQL:

CREATE TABLE IF NOT EXISTS myns.orders_v3 ( order_id bigint, customer_id string, order_date date, total_amount decimal(10,2), status string, created_at timestamp ) USING iceberg TBLPROPERTIES ( 'format-version' = '3' )

將第 2 版資料表升級至第 3 版

您可以將現有的第 2 版資料表以原子方式升級至第 3 版,而無需重寫資料。

使用 Spark SQL:

ALTER TABLE myns.existing_table SET TBLPROPERTIES ('format-version' = '3')
重要

第 3 版是單向升級。資料表從第 2 版升級至第 3 版之後,就無法透過標準操作降級回第 2 版。

升級期間會發生什麼情況:

  • 會以原子方式建立新的中繼資料快照。

  • 重複使用現有的 Parquet 資料檔案。

  • 資料列譜系欄位會新增至資料表中繼資料。

升級後:

  • 下一個壓縮動作會移除舊第 2 版的刪除檔案。

  • 新的修改將使用第 3 版刪除向量檔案。

升級不會執行資料列歷程變更追蹤記錄的歷史回填。

啟用刪除向量

若要利用刪除向量進行更新、刪除和合併,請設定您的寫入模式。

使用 Spark SQL:

ALTER TABLE myns.orders_v3 SET TBLPROPERTIES ('format-version' = '3', 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )

這些設定可確保更新、刪除和合併操作會建立刪除向量檔案,而不是重寫整個資料檔案。

使用資料列歷程記錄進行變更追蹤

第 3 版會自動新增資料列歷程中繼資料欄位以追蹤變更。

使用 Spark SQL:

# Query with parameter value provided last_processed_sequence = 47 SELECT id, data, _row_id, _last_updated_sequence_number FROM myns.orders_v3 WHERE _last_updated_sequence_number > :last_processed_sequence

_row_id 欄位可唯一識別每一列,並_last_updated_sequence_number追蹤列上次修改的時間。使用這些欄位來:

  • 識別變更的資料列以進行增量處理。

  • 追蹤資料譜系的合規性。

  • 最佳化 CDC 管道。

  • 僅處理變更以降低運算成本。

第 3 版的最佳實務

何時使用第 3 版

在下列情況下,請考慮升級至第 3 版或從第 3 版開始:

  • 您經常執行批次更新或刪除。

  • 您需要符合 GDPR 或合規刪除要求。

  • 您的工作負載涉及高頻率 upsert。

  • 您需要有效率的 CDC 工作流程。

  • 您想要降低小型檔案的儲存成本。

  • 您需要更好的變更追蹤功能。

最佳化寫入效能

  • 為繁重的更新工作負載啟用刪除向量:

    SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )
  • 設定適當的檔案大小:

    SET TBLPROPERTIES ( 'write.target-file-size-bytes' = '536870912' — 512 MB )

最佳化讀取效能

  • 使用資料列譜系進行增量處理。

  • 使用時間歷程來存取歷史資料,無需複製。

  • 啟用統計資料收集,以便更好地規劃查詢。

遷移策略

當您從第 2 版遷移到第 3 版時,請遵循下列最佳實務:

  • 首先在非生產環境中進行測試,以驗證升級程序和效能。

  • 在低活動期間升級,將對並行操作的影響降至最低。

  • 監控初始效能,並在升級後追蹤指標。

  • 執行壓縮以在升級後合併刪除檔案。

  • 更新您的團隊文件以反映第 3 版功能。

相容性考量

  • 引擎版本 – 確定存取資料表的所有引擎都支援第 3 版。

  • 第三方工具 – 升級之前,請先驗證工具的第 3 版相容性。

  • 備份策略 – 測試快照型復原程序。

  • 監控 – 更新第 3 版特定指標的監控儀表板。

疑難排解

常見問題

錯誤:「不支援 格式版本 3」

  • 確認您的引擎版本支援第 3 版。 如需詳細資訊,請參閱本節開頭的 表格

  • 檢查目錄相容性。

  • 請確定您使用的是最新版本的 AWS 服務。

升級後效能降低

  • 確認沒有壓縮壓縮失敗。如需詳細資訊,請參閱 Amazon S3 文件中的記錄和監控 S3 資料表。 Amazon S3

  • 確認已啟用刪除向量。應設定下列屬性:

    SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )

    您可以使用下列程式碼來驗證資料表屬性:

    DESCRIBE FORMATTED myns.orders_v3
  • 檢閱您的分割區策略。過度分割可能會導致小型檔案。執行下列查詢以取得資料表的平均檔案大小:

    SELECT avg(file_size_in_bytes) as avg_file_size_bytes FROM myns.orders_v3.files

與第三方工具不相容

  • 確認工具支援第 3 版規格。

  • 請考慮維護不支援工具的第 2 版資料表。

  • 請聯絡工具廠商以取得其第 3 版支援時間表。

取得說明

  • 如需 AWS 服務了解特定問題,請聯絡 AWS 支援

  • 若要從 Iceberg 社群取得協助,請使用 Iceberg Slack 頻道

  • 如需有關使用 AWS 服務 管理分析工作負載的資訊,請參閱 上的分析 AWS

定價

可用性

Iceberg 資料表格式規格第 3 版支援可在 Amazon EMR AWS Glue AWS Glue Data Catalog、 和 S3 Tables 運作的所有 AWS 區域 中使用。如需區域可用性,請參閱AWS 服務 依區域

其他資源