
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 的读取功能,同时规划他们的写入作以适应他们选择的格式的限制。