使用 Apache Iceberg V3 - Amazon Simple Storage Service

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

使用 Apache Iceberg V3

Apache Iceberg 第 3 版 (V3) 是 Apache Iceberg 資料表格式規格的最新版本,引入了進階功能,可建置 PB 級資料湖,以改善效能並減少營運開銷。V3 解決 V2 常見的效能瓶頸,特別是在批次更新和合規刪除方面。

AWS 支援 Apache Iceberg 第 3 版 (V3) 規格中定義的刪除向量和資料列歷程。這些功能適用於 Amazon EMR 7.12 上的 Apache Spark、AWS Glue ETLAmazon SageMaker Unified Studio 筆記本,以及 AWS Glue Data Catalog 中的 Apache Iceberg 資料表,包括 Amazon S3 資料表

V3 中的主要功能

刪除向量

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

資料列線性

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

版本相容性

V3 與 V2 資料表保持回溯相容性。 AWS 服務同時支援 V2 和 V3 資料表,可讓您:

  • 跨 V2 和 V3 資料表執行查詢

  • 將現有的 V2 資料表升級至 V3,無需重新寫入資料

  • 執行跨越 V2 和 V3 快照的時間歷程查詢

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

重要

V3 是單向升級。一旦資料表從 V2 升級至 V3,就無法透過標準操作降級回 V2。

V3 入門

先決條件

使用 V3 資料表之前,請確定您有:

  • 具有適當 IAM 許可 AWS 的帳戶

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

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

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

  • AWS 已設定的 Glue 目錄

建立 V3 資料表

建立新的 V3 資料表

若要建立新的 Iceberg V3 資料表,請將 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' )

將 V2 資料表升級至 V3

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

使用 Spark SQL:

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

V3 是單向升級。一旦資料表從 V2 升級至 V3,就無法透過標準操作降級回 V2。

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

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

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

  • 資料列線性欄位會新增至資料表中繼資料

  • 下一個壓縮動作會移除舊的 V2 刪除檔案

  • 新的修改將使用 V3 的刪除向量檔案

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

啟用刪除向量

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

使用 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' )

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

利用資料列線性進行變更追蹤

V3 會自動新增資料列中繼資料欄位以追蹤變更。

使用 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 管道

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

V3 的最佳實務

何時使用 V3

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

  • 您執行頻繁的批次更新或刪除

  • 您需要符合 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 )

最佳化讀取效能

  • 利用資料列線性進行增量處理

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

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

遷移策略

從 V2 遷移至 V3 時:

  • 先在非生產環境中測試 - 驗證升級程序和效能

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

  • 監控初始效能 - 升級後追蹤指標

  • 執行壓縮 - 升級後合併刪除檔案

  • 更新文件 - 反映團隊文件中的 V3 功能

相容性考量事項

  • 引擎版本 - 確保所有存取資料表的引擎都支援 V3

  • 第三方工具 - 升級前驗證 V3 相容性

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

  • 監控 - 更新 V3-specific指標的監控儀表板

疑難排解

常見問題

錯誤:「不支援 格式版本 3」
  • 確認您的引擎版本支援 V3

    Amazon AWS 服務的 V3 支援如下所示:

    服務 V3 支援
    EMR Spark 7.12+ 版
    AWS Glue ETL
    Amazon SageMaker Unified Studio 筆記本
    AWS Glue:Iceberg REST API、資料表維護
    Amazon S3 資料表:Iceberg REST API、資料表維護
    Amazon Athena (Trino)
  • 檢查目錄相容性

  • 確保最新的 AWS 服務版本

升級後效能降低
  • 確認沒有壓縮失敗。如需詳細資訊,請參閱記錄和監控 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
與第三方工具不相容
  • 驗證工具支援 V3 規格

  • 考慮維護不支援工具的 V2 資料表

  • V3 支援時間表的聯絡工具廠商

取得說明

  • AWS 支援:聯絡 AWS Support 了解服務特有的問題

  • Apache Iceberg 社群:Iceberg Slack

  • AWS 文件: AWS 分析文件

定價

可用性

Apache Iceberg V3 支援適用於 Amazon EMR、 AWS Glue Data Catalog、 AWS Glue ETL 和 S3 Tables 運作的所有 AWS 區域。

其他資源