The Linux Foundation Projects
Delta Lake

Delta Lake 3.3

作者:Allison PortisSusan Pierce

我们很高兴地宣布在 Apache Spark 3.5.3 上发布 Delta Lake 3.3(发布说明),其中包含可提高 Delta Lake 性能和互操作性的功能。无论您是构建可扩展的管道、优化查询还是确保数据治理,此版本都旨在帮助您事半功倍。

让我们深入了解亮点

  • 标识列为插入到表中的每条记录分配唯一值
  • VACUUM LITE 使用 Delta 事务日志识别未引用的文件,从而实现更快的表维护
  • 行跟踪回填在现有表的 Delta Spark 中跟踪行级血缘关系
  • 版本校验和提供更强的一致性保证、增强的性能和更轻松的调试
  • UniForm ALTER 支持在现有 Delta Lake 表上启用 UniForm,而无需重写数据
  • 类型拓宽现在在 Delta Kernel Java 和 Rust 中受支持

Delta Lake 3.3 有哪些新功能?

在 Delta Lake 3.0+ 中发布的功能基础上,Delta Lake 3.3 引入了大量性能增强和优化。

标识列

标识列是表中的列,它们自动为每个新行生成唯一的 ID。它们是数据仓库工作负载的长期支柱,在数据建模时通常用作主键和外键。Delta Lake 3.3 支持创建标识列,为每个新行提供唯一的自动递增 ID 号。这大大简化了数据建模,并避免了手动、脆弱解决方案的需求。有关更多信息,请参阅文档。

VACUUM LITE

表维护变得更简单、更快。使用 VACUUM LITE,您可以比以往更快地清理未引用的文件。此功能使用 Delta 事务日志识别并删除过期文件,为定期清理任务提供 5-10 倍的性能改进。通过这种优化的表维护方法,节省时间并降低成本。有关更多信息,请参阅 GitHub。

行跟踪回填

行跟踪是 Delta Spark 中跟踪行级血缘关系的功能,在 Delta 3.2 中针对新表引入。借助回填支持,您现在可以在现有表上启用行跟踪。启用后,用户可以跨表的多个版本识别行,并可以使用两个元数据字段“行 ID”和“行提交版本”访问此跟踪信息。有关更多信息和示例,请参阅行跟踪文档。

版本校验和

Delta Lake 现在为每次表提交都包含版本校验和,为您的数据生态系统带来了更强的一致性保证和更好的调试工具。文件计数、表大小和数据分布直方图等详细指标可以自动检测潜在的状态不一致。状态验证在每个检查点执行,有助于维护分布式环境中的表完整性。校验和还用于绕过检索协议和元数据操作的初始 Spark 查询,从而缩短快照初始化延迟。有关更多信息,请参阅 GitHub。

在 ALTER 上启用 UniForm

Delta Lake 现在支持在现有表上启用 UniForm Iceberg,而无需重写数据。这意味着您可以跨 Iceberg 客户端无缝读取和共享表,从而增强了各种工作流的兼容性和灵活性。有关更多详细信息,请参阅文档。

Delta Kernel 的类型拓宽

Delta Kernel 项目是一组 Java 和 Rust 库,用于构建 Delta 连接器,这些连接器可以读写 Delta 表,而无需了解 Delta 协议的详细信息。类型拓宽是一项功能,允许您将 Delta 表中某些列的类型更改为更宽的类型,以适应数据扩展,而无需重写任何现有数据。当表启用类型拓宽时,您可以使用 ALTER TABLE ALTER COLUMN 命令手动启用类型更改。INSERT 和 MERGE INTO 命令也支持通过模式演化进行自动类型迁移。

在此版本中,两种内核实现现在都支持读取启用了类型拓宽的表,确保更好的兼容性和平稳的模式更改处理。使用任何一种内核实现的任何连接器现在都可以读取包含任何符合类型拓宽条件的数据类型的表。

附加功能

这只是一些亮点。附加功能包括

所有这些以及更多功能和错误修复都概述在 Delta 3.3 发布说明中。准备好开始了吗?浏览 Delta Lake 文档了解所有详细信息,并立即升级到 Delta Lake 3.3.0。

致谢

感谢所有参与 Delta Lake 3.3 发布的人员

Abhishek Radhakrishnan, Adam Binford, Alden Lau, Aleksei Shishkin, Alexey Shishkin, Allison Portis, Ami Oka, Amogh Jahagirdar, Andreas Chatzistergiou, Andrew Xue, Anish, Annie Wang, Avril Aysha, Bart Samwel, Burak Yavuz, Carmen Kwan, Charlene Lyu, ChengJi-db, Chirag Singh, Christos Stavrakakis, Cuong Nguyen, Dhruv Arya, Eduard Tudenhoefner, Felipe Pessoto, Fokko Driesprong, Fred Storage Liu, Hao Jiang, Hyukjin Kwon, Jacek Laskowski, Jackie Zhang, Jade Wang, James DeLoye, Jiaheng Tang, Jintao Shen, Johan Lasperas, Juliusz Sompolski, Jun, Jungtaek Lim, Kaiqi Jin, Kam Cheung Ting, Krishnan Paranji Ravi, Lars Kroll, Leon Windheuser, Lin Zhou, Liwen Sun, Lukas Rupprecht, Marko Ilić, Matt Braymer-Hayes, Maxim Gekk, Michael Zhang, Ming DAI, Mingkang Li, Nils Andre, Ole Sasse, Paddy Xu, Prakhar Jain, Qianru Lao, Qiyuan Dong, Rahul Shivu Mahadev, Rajesh Parangi, Rakesh Veeramacheneni, Richard Chen, Richard-code-gig, Robert Dillitz, Robin Moffatt, Ryan Johnson, Sabir Akhadov, Scott Sandre, Sergiu Pocol, Shawn Chang, Shixiong Zhu, Sumeet Varma, Tai Le Manh, Taiga Matsumoto, Tathagata Das, Thang Long Vu, Tom van Bussel, Tulio Cavalcanti, Venki Korukanti, Vishwas Modhera, Wenchen Fan, Yan Zhao, YotillaAntoni, Yumingxuan Guo, Yuya Ebihara, Zhipeng Mao, Zihao Xu, zzl-7

我们还要特别感谢 Allison Portis 为此次发布做出的贡献。

一如既往,衷心感谢我们的开源社区的贡献。

今天就加入社区吧!

我们始终很高兴与我们当前的贡献者社区合作,并欢迎新成员。如果您有兴趣帮助 Delta Lake 项目,请查看项目路线图,并通过我们的任何论坛加入我们的社区,包括GitHubSlackXLinkedInYouTubeGoogle Groups