本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Iceberg 資料表格式規格第 3 版
Apache Iceberg 資料表格式規格的最新版本是第 3 版。此版本推出進階功能,可建置 PB 級資料湖,以改善效能並降低營運開銷。它解決了第 2 版遇到的常見效能瓶頸,特別是在批次更新和合規刪除操作方面。
AWS 支援 Iceberg 第 3 版規格中定義的刪除向量和資料列歷程。這些功能可在下列 Apache Spark 上使用 AWS 服務。
| AWS 服務 | 第 3 版支援 |
|---|---|
|
Amazon EMR 7.12 版及更新版本 |
|
|
是 |
|
|
AWS Glue:Iceberg REST API、資料表維護 |
是 |
|
是 |
|
|
Amazon S3 資料表:Iceberg REST API、資料表維護 |
是 |
|
否 |
第 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 服務 依區域