The Linux Foundation Projects
Delta Lake

Delta Lake 1.1.0 发布

作者:Scott Sandre

我们很高兴地宣布,Delta Lake 1.1.0 已在 Apache Spark 3.2 上发布。与 Apache Spark™ 类似,我们发布了适用于 Scala 2.12 和 Scala 2.13 的 Maven 工件。此版本的关键功能如下。

  • MERGE 操作的性能改进

  • 支持通过 DataFrameReader/Writer 选项传递 Hadoop 配置 - 您现在可以通过 DataFrameReader/Writer 选项设置 Hadoop FileSystem 配置(例如,访问凭据)。以前,传递此类配置的唯一方法是设置 Spark 会话配置,这将为所有读取和写入设置相同的值。现在您可以为每次读取和写入设置不同的值。有关更多详细信息,请参阅文档

  • 支持在 replaceWhere DataFrameWriter 选项中使用任意表达式 - 除了仅在分区列上使用表达式外,您现在可以在 replaceWhere DataFrameWriter 选项中使用任意表达式。也就是说,您可以直接通过 DataFrame 写入来替换表中的任意数据。有关更多详细信息,请参阅文档

  • 改进了在结构数组上 MERGE 操作的嵌套字段解析和模式演化 - 当对目标表应用 MERGE 操作时,如果目标表有一个类型为结构数组的列,则源数据和目标数据之间的嵌套列现在按名称而不是按结构中的位置解析。这确保了数组中的结构与数组之外的结构具有一致的行为。当 MERGE 的自动模式演化启用时,数组中结构中的嵌套列将遵循与数组外结构中的列相同的演化规则(例如,如果表中不存在同名列,则添加列)。有关更多详细信息,请参阅文档

  • 支持在 MERGE 操作中使用生成列 - 您现在可以对包含生成列的表应用 MERGE 操作。

  • 修复了 GCS 上罕见的数据损坏问题 - Delta Lake 1.0 中发布的实验性 GCS 支持存在一个罕见的错误,可能导致 Delta 表因部分写入的事务日志文件而无法读取。此问题现已修复(1, 2)。

  • 修复了 Python DeltaTable.convertToDelta() 中返回对象不正确的问题 - 此现有 API 现在返回类型为 delta.tables.DeltaTable 的正确 Python 对象,而不是类型不正确且因此无法使用的对象。

  • Python 类型注解 - 我们添加了 Python 类型注解,这提高了支持类型提示的编辑器中的自动补全性能。您可以选择通过 mypy 或内置工具(例如 Pycharm 工具)启用静态检查。

  • 其他值得注意的更改

    • 移除了对分区列名中包含某些特殊字符的表的读取支持。有关详细信息,请参阅迁移指南
    • 为了与其他 API 保持一致,在 DeltaTable.forName()支持“delta.`path`”
    • 对 Delta 1.0.0 中引入的 DeltaTableBuilder API 的改进
      • 修复了阻止在 Python DeltaTableBuilder.partitionBy 中传递多个分区列的错误。
      • 当未指定列数据类型时抛出错误
    • 改进了对临时视图上的 MERGE/UPDATE/DELETE 的支持
    • 在创建或替换表时,支持在提交信息中设置 userMetadata
    • 在 MERGE 具有多个 INSERT 和 UPDATE 子句且启用了自动模式演化时,修复了不正确的分析异常。
    • 修复了 MERGE/UPDATE/DELETE 操作对路径中特殊字符(例如空格)处理不正确的问题。
    • 修复了 Vacuum 并行模式受 Apache Spark 3.2 中默认启用的自适应查询执行影响的问题。
    • 修复了最早有效时间旅行版本的问题。
    • 修复了 Hadoop 配置未用于写入检查点的问题。
    • Delta 约束的多项修复(1, 2, 3)。

致谢

Abhishek Somani, Adam Binford, Alex Jing, Alexandre Lopes, Allison Portis, Bogdan Raducanu, Bart Samwel, Burak Yavuz, David Lewis, Eunjin Song, Feng Zhu, Flavio Cruz, Florian Valeye, Fred Liu, Guy Khazma, Jacek Laskowski, Jackie Zhang, Jarred Parrett, JassAbidi, Jose Torres, Junlin Zeng, Junyong Lee, KamCheung Ting, Karen Feng, Lars Kroll, Li Zhang, Linhong Liu, Liwen Sun, Maciej, Max Gekk, Meng Tong, Prakhar Jain, Pranav Anand, Rahul Mahadev, Ryan Johnson, Sabir Akhadov, Scott Sandre, Shixiong Zhu, Shuting Zhang, Tathagata Das, Terry Kim, Tom Lynch, Vijayan Prabhakaran, Vítor Mussa, Wenchen Fan, Yaohua Zhao, Yijia Cui, YuXuan Tay, Yuchen Huo, Yuhong Chen, Yuming Wang, Yuyuan Tang, Zach Schuermann, ericfchang, gurunath

访问发布说明了解有关此版本的更多信息。