Apache XTable 通過以多種開放表格式提供對數據的訪問,在增強互作性方面邁出了一大步。移動數據很困難,在過去,這意味著在為數據湖倉一體選擇開放表格式時,您被鎖定在該選擇中。一個令人興奮的項目當在數據堆棧的這一層引入互作性時,它有效地將查詢引擎商品化,降低了價格,并迫使查詢引擎本身通過高級功能、優化的查詢性能和其他超出簡單數據訪問的增值功能來區分其產品,以使用戶受益。 最終促進分析生態系統中的創新和競爭。
什么是 Apache XTable?
Apache XTable 是一個開源元數據轉換器,可簡化開放表格式(Apache Iceberg、Apache Hudi 和 Delta Lake)之間的互作性。XTable 允許您跨多種表類型進行讀取和寫入,而不是復制數據或被鎖定為一種格式。它輕量級、高效,非常適合格式靈活性很重要的靈活數據架構。
它是如何工作的?
XTable 允許您在打開的表格格式之間切換,而無需移動或重寫數據。它的工作原理是讀取表的現有元數據并以正確的格式寫出新元數據,因此您的數據看起來就像最初是用 Delta、Hudi 或 Iceberg 編寫的一樣。元數據存儲在每種格式所需的位置:delta_log 表示 Delta,metadata/ 表示 Iceberg,.hoodie/ 表示 Hudi。從那里,您選擇的 compute 可以使用您選擇的元數據讀取數據。
Apache XTable 的體系結構包括 3 個主要組件:
源讀取器: 此模塊負責從源表格式讀取元數據。它提取基本信息,例如架構定義、事務歷史記錄和分區詳細信息,并將它們轉換為統一的內部表示形式。
核心邏輯:作為中央處理單元,核心邏輯協調整個翻譯過程。它管理組件的初始化,監督狀態管理,并處理緩存以提高效率和增量處理等任務。
目標作家:該模塊從核心邏輯中獲取統一的內部表示,并將其準確映射到目標表格式的元數據結構,確保一致性和兼容性。
使用案例
我們已經向您展示了如何從 Hadoop 遷移到 MinIO,而無需完全淘汰和替換。來自 Hadoop 生態系統的出色軟件,包括 HMS 和 Hudi。我們的遷移模板允許您保留 HMS,同時放棄 Haddop 以支持 MinIO 進行存儲。這是可能的,因為 HMS 有一個 S3 連接器。從這一點來看,組織可以使用 HMS、Hudi 和 MinIO 構建數據湖倉一體。從那里,他們無需遷移數據即可探索其他計算引擎,例如 Dremio 和 Snowflake,這些引擎使用 XTable 在 Iceberg Tables 上運行。
對于許多仍在運行的遺留系統來說,這可能是一條實現現代化的途徑。有很多可能性,但也有一些限制。
限制
在此階段,XTable 主要支持表的寫入時復制 (CoW) 和讀取優化視圖。這意味著,雖然基礎 Parquet 文件已同步,但不會捕獲某些動態方面。
哪些內容未同步?
-
Hudi 日志文件:對于使用 Apache Hudi 的讀取時合并 (MOR) 表的用戶,XTable 當前不會同步存儲增量數據的日志文件。在使用 MoR 的情況下,這種遺漏可能導致數據表示不完整。
-
Delta 和 Iceberg 刪除向量:在 Delta Lake 和 Apache Iceberg 等格式中,刪除向量在標記要刪除的記錄而不實際刪除記錄方面起著至關重要的作用。目前,XTable 不會捕獲這些刪除向量,這可能會導致同步后反映過時或不正確的數據。
由于這些限制,Hudi、Delta Lake 或 Iceberg 中的上述機制跟蹤的任何更新或刪除都不會反映在同步數據中。這可能會給依賴最新數據集狀態的工作流帶來挑戰,尤其是在數據經常更新或刪除的環境中。
前方的道路
盡管目前存在寫入限制,但 Apache XTable 代表了現代數據堆棧發展的重要一步。看看這個令人興奮的項目的下一步會很有趣。目前,組織應該戰略性地利用 XTable 的讀取功能,同時規劃他們的寫入作以適應他們選擇的格式的限制。