The Linux Foundation Projects
Delta Lake

Delta Lake 4.0 预览版

作者:Tathagata DasAllison PortisScott SandreSusan PierceCarly Akerly

我们很高兴宣布 Delta Lake 4.0 预览版发布(发行说明,基于 Apache Spark™ 4.0 预览版)。这里无法一一列举所有功能,但我们将重点介绍值得关注的新增功能,以及 Delta Lake 社区的其他新闻。

Delta Lake 4.0 有哪些新功能?

Delta Lake 4.0 是迄今为止最大的版本,包含了可靠性、性能和易用性方面的新功能。

可靠性和性能功能:Delta Lake 是数据湖屋最快的数据存储格式,受到财富 500 强中超过 60% 企业的信赖。Delta 正在增加更多功能,使其更容易调试应用程序、管理跨数据系统的事务以及处理不同类型的数据。

  • Delta Connect(预览版):Delta Lake 对 Spark 中新的客户端-服务器架构的支持。
  • 协调提交(预览版):多云和多引擎写入,无需依赖文件系统协调提交。
  • 开放式变体类型(预览版):半结构化数据支持,对不断变化的模式具有灵活性,同时具有高性能。

便捷功能:湖屋需要适应不断变化的数据和类型。Delta Lake 灵活多变,可以适应随着时间扩展的数据类型,并提供便捷功能,使其更易于使用您的数据。

Delta Lake 生态系统也继续快速增长。我们重点介绍生态系统的三个关键领域:

  • Delta Lake UniForm:通过 Spark 3.5 上的 Delta 3.2,UniForm 现在支持 Apache Hudi 和 Apache Iceberg。
  • Delta Kernel 项目显著扩展了 Delta Lake 连接器生态系统,包括为 DuckDB、Apache Druid、Apache Flink 和 Delta Sharing 构建的最新连接器,所有这些都基于 Kernel。
  • delta-rs 1.0:Delta Lake 的社区驱动的 Rust 实现。

可靠性和性能

Delta Lake 是湖屋最快的表格式,现在它的可靠性更高。通过 Delta Lake 对 Spark Connect 的支持,在数据应用程序中控制内存使用和版本不匹配将变得更加容易。客户端/服务器架构易于调试并提供性能可观察性。

Delta Connect(预览版可用)

Delta Connect 为 Apache Spark 上的 Delta Lake 添加了 Spark Connect 支持。Spark Connect 是一项新举措,它增加了分离的客户端-服务器基础设施,允许 Spark 从任何地方进行远程连接。Delta Connect 允许所有 Delta Lake 操作在作为连接到 Spark 服务器的客户端运行的应用程序中工作。在预览版中,用户可以通过 Spark Connect 进行 Delta 表扫描。

Delta Connect 预计将带来与 Spark Connect 相同的优势。这些优势包括:

  1. 升级到更新的 Spark 和 Delta 版本更容易,因为客户端接口与服务器完全分离。
  2. Spark 和 Delta 与开发工具的集成更简单。
  3. IDE 不再需要与完整的 Spark 和 Delta 实现集成,而是可以与精简客户端集成。支持 Java/Scala 和 Python 以外的语言。
  4. 客户端“只需”生成 Protocol Buffers,因此实现起来更简单。Spark 和 Delta 将变得更稳定,因为用户代码不再与 Spark 驱动程序在同一个 JVM 中运行。
  5. 远程连接。代码现在可以在任何地方运行,因为用户界面和驱动程序之间有一个 gRPC 层。

协调提交(预览版可用)

此外,Delta Lake 正在通过协调提交(一个集中式提交服务,用于协调对 Delta 表的写入)来支持多语句和多表事务。

更新后的 Delta Lake 提交协议实现了可靠的多云和多引擎写入,这些写入不依赖文件系统提供提交原子性。用户可以为其 Delta 表指定一个“提交协调器”,该协调器将管理对表的所有写入。“提交协调器”协调来自不同集群的并发写入,并确保读取器获得最新表版本。此版本随附一个 DynamoDB 提交协调器。通过引入用于写入 Delta 表的集中式协调器,此更改也为多语句和多表事务铺平了道路。请继续关注未来几个月更多激动人心的更新!

变体类型(预览版可用)

Delta Lake 也正在获得更多数据类型以支持其他用例。许多湖屋用例使用半结构化数据,包括物联网遥测数据、营销分析等。在 VARIANT 之前,您在存储半结构化数据方面受到限制。最灵活的选项是将 JSON 作为字符串存储在单列中,但这会降低读取性能。历史上,为了保持性能,您必须使用结构体强制执行严格的模式,并开发额外的处理步骤来处理模式更新。

一些专有数据仓库已为这些用例开发了对变体数据类型的支持,现在我们正在 Delta Lake 中引入 VARIANT。变体 具有灵活性,因此您无需定义显式模式,并且其性能明显优于基于字符串的解决方案。

易用性

湖屋需要适应不断变化的数据和类型。Delta Lake 灵活多变,可以适应半结构化数据和随时间扩展的列数据类型。Delta Lake 还提供灵活的数据布局,可适应不断变化的查询模式,并支持就地更改聚类键,而无需耗时且成本高昂的重写。

类型拓宽(预览版可用)

Delta 3.2 中引入的 类型拓宽 预览版现在支持 Delta 4.0 中的更多类型更改。此功能允许拓宽数据类型,例如将列从 INT 演变为 LONG 而无需重写数据。类型更改可以使用 ALTER TABLE CHANGE COLUMN TYPE 命令手动应用,或在 INSERT 和 MERGE 操作中使用模式演变自动应用。通过启用此功能,Delta Lake 不仅支持带有模式演变的数据类型更改,而且还通过在读取期间自动向上转型数据类型来确保无缝数据摄取和处理。

标识列(即将推出)

标识列是表中自动为表的每一新行生成唯一 ID 的列。它们是数据仓库工作负载的长期支柱,通常在数据建模时用作主键和外键。Delta Lake 4.0 即将支持自动创建具有唯一、自增 ID 号的标识列,用于每行新数据。这极大地简化了数据建模,避免了手动、脆弱的解决方案。

排序规则(即将推出)

排序规则指定表中值的排序和比较方式。它们广泛用于各种情况,包括指定比较是否区分大小写,或定义跨语言或文化上下文的正确排序和搜索。即将推出,您将能够为 Delta Lake 表中的列指定排序规则,从而允许 Spark 等查询引擎执行正确的排序和比较行为。

Delta 生态系统更新

UniForm GA

Delta Lake 通用格式,即 UniForm,自 Delta Lake 3.0 首次发布以来已得到广泛使用。得益于 Apache XTable™ 社区的贡献,Delta 3.2 版本的 UniForm 包括对 Apache Hudi 的支持。现在,用户可以使用 UniForm 在所有格式下一次写入数据。

Delta Kernel

有关 Kernel 项目的背景信息,请查看我们关于该项目背景的最新博客文章。最近几周,使用 Delta Kernel 的连接器数量有所增加,包括 DuckDBStarTree、Apache Druid、Apache Flink 和 Delta Sharing。

"Delta Kernel pie chart"

delta-rs 1.0

Delta Rust 是 Delta Lake 的社区驱动实现,该项目在过去一年中在新功能和扩展支持方面取得了令人难以置信的增长。delta-rs 1.0 版本包括以下用于数据可靠性、性能和易用性的功能:

  • 变更数据流支持
  • 约束
  • 所有 Rust/Python 编写器的模式演变
  • 删除向量支持
  • 默认情况下,Python 的基于 Rust 的编写器引擎
  • DataFusion 集成的稳定 API
  • 通过对象存储的环境变量进行配置的稳定 API

致谢

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

Abhishek Radhakrishnan、Allison Portis、Ami Oka、Andreas Chatzistergiou、Anish、Carmen Kwan、Chirag Singh、Christos Stavrakakis、Dhruv Arya、Felipe Pessoto、Fred Storage Liu、Hyukjin Kwon、James DeLoye、Jiaheng Tang、Johan Lasperas、Jun、Kaiqi Jin、Krishnan Paranji Ravi、Lin Zhou、Lukas Rupprecht、Ole Sasse、Paddy Xu、Prakhar Jain、Qianru Lao、Richard Chen、Sabir Akhadov、Scott Sandre、Sergiu Pocol、Sumeet Varma、Tai Le Manh、Tathagata Das、Thang Long Vu、Tom van Bussel、Venki Korukanti、Wenchen Fan、Yan Zhao、zzl-7

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

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

今天就加入社区吧!

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