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 操作的性能改进
- 在分区表上,MERGE 操作将自动在写入文件之前重新分区输出数据。这确保了 MERGE 操作和后续读取操作都能获得更好的开箱即用性能。
- 在非常宽的表(例如,1000 列)上,MERGE 操作现在可以更快,因为它避免了在具有约 1000 列或更多列的表中解析列名时的二次复杂度。
-
支持通过 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 的改进
- 改进了对临时视图上的 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
访问发布说明了解有关此版本的更多信息。