无服务器计算发行说明

本文介绍笔记本和作业的无服务器计算当前可用和即将推出的功能和行为。

有关无服务器计算的详细信息,请参阅连接到无服务器计算

Azure Databricks 定期发布对无服务器计算的更新,自动升级无服务器计算运行时以支持增强功能和升级到平台。 所有用户都会获得将在短时间内推出的相同更新。

无服务器环境版本

笔记本和作业的无服务器计算使用环境版本,这些版本基于 Spark Connect 提供稳定的客户端 API,以确保应用程序兼容性。 这样,Databricks 就可以独立升级服务器,从而提供性能改进、安全增强和 bug 修复,而无需对工作负载进行任何代码更改。

每个环境版本包括特定的 Python 版本和一组具有已定义版本的 Python 包。 Databricks 引入了最新环境版本中的新功能和修补程序,同时向所有受支持的环境版本应用安全更新。

有关无服务器环境版本发行说明,请参阅 无服务器环境版本

发行说明

本部分包括无服务器计算的发行说明。 发行说明按年份和年度周次进行安排。 无服务器计算始终使用此处列出的最新发行版本来运行。

版本 17.3

2025 年 10 月 28 日

此无服务器计算版本大致对应于 Databricks Runtime 17.3 LTS

新功能

  • LIMIT 对递归 CTE 的所有支持:现在可以将 LIMIT ALL 子句与递归公共表表达式(rCTE)一起使用,以显式指定不应将行限制应用于查询结果。 请参阅通用表表达式(CTE)。

  • 追加到 Unity Catalog 卷中的文件会返回正确的错误:现在,尝试追加到 Unity Catalog 卷中的现有文件会返回更具描述性的错误消息,帮助你理解并解决相关问题。

  • st_dump 函数支持:现在 st_dump 可以使用函数将几何图形对象分解为其构成部分,并返回一组更简单的几何图形。 请参阅 st_dump 函数

  • 现在支持多边形内部环函数:现在可以使用以下函数来处理多边形内部环:

  • EXECUTE IMMEDIATE 使用常量表达式:该 EXECUTE IMMEDIATE 语句现在支持在查询字符串中使用常量表达式,从而允许更灵活的动态 SQL 执行。 请参阅 EXECUTE IMMEDIATE

  • 允许 spark.sql.files.maxPartitionBytes 在无服务器计算中:现在可以配置 spark.sql.files.maxPartitionBytes 无服务器计算上的 Spark 配置参数,用于控制读取文件时要打包到单个分区的最大字节数。 请参阅 为无服务器笔记本和作业配置 Spark 属性

行为更改

  • 支持 DESCRIBE EXTENDED AS JSON 中的 MV/ST 刷新信息:该 DESCRIBE EXTENDED AS JSON 命令现在包括物化视图和流表的刷新信息,从而提供上次刷新时间和状态的可见性。

  • 向DESCRIBE QUERY和DESCRIBE TABLE添加元数据列:和DESCRIBE QUERYDESCRIBE TABLE命令现在在其输出中包含元数据列,提供有关每个列的属性和特征的其他信息。

  • 命令的默认模式更改FSCK REPAIR TABLE:命令的默认模式FSCK REPAIR TABLE已更改,以在修复表元数据时提供更一致的行为。 请参阅 REPAIR TABLE

  • 删除 NullType 列时正确处理 null 结构:Azure Databricks 现在在使用删除列 NullType时正确处理 null 结构值,从而防止潜在的数据损坏或意外行为。

  • 改进了 Parquet 中 null 结构的处理:此版本包括对从 Parquet 文件读取和写入时如何处理 null 结构值的改进,确保行为更加一致和正确。

  • 升级适用于 Kafka 的 aws-msk-iam-auth 库aws-msk-iam-auth 用于 Amazon MSK IAM 身份验证的库已升级到最新版本,提高了安全性和兼容性。

版本 17.2

2025 年 9 月 25 日

此无服务器计算版本大致对应于 Databricks Runtime 17.2

新功能

  • ST_ExteriorRing 函数现在受支持:现在 ST_ExteriorRing 可以使用该函数提取多边形的外部边界,并将其作为线字符串返回。 请参阅 st_exteriorring 函数

  • 创建指标视图的支持 TEMPORARY 关键字:现在可以在创建指标视图时使用该 TEMPORARY 关键字。 临时指标视图仅在创建临时指标视图的会话中可见,并在会话结束时被删除。 请参阅 CREATE VIEW

  • 在 S3 上使用本机 I/O:LokiFileSystem.getFileStatus 现在对 Amazon S3 流量使用本机 I/O 堆栈,并返回 对象,而不是 LokiFileSystem.getFileStatus

  • 自动加载程序以 singleVariantColumn 模式推断分区列:使用此选项将数据引入为半结构化变体类型时,自动加载程序现在从 singleVariantColumn 文件路径推断分区列。 以前,不会自动检测到分区列。 请参阅 自动加载程序选项

行为更改

  • DESCRIBE CONNECTION 显示 JDBC 连接的环境设置:Azure Databricks 现在在支持自定义驱动程序和隔离运行的 JDBC 连接的输出中包含 DESCRIBE CONNECTION 用户定义的环境设置。 其他连接类型保持不变。

  • 托管表迁移中可截断统一历史记录的选项:现在,可以在功能启用后,通过迁移表时截断统一历史记录。 这简化了迁移,减少了与手动禁用和重新启用 Uniform 相比的停机时间。

  • 使用空正则表达式和正限制的正确结果split:使用空正则表达式和正值限制时split function,Azure Databricks 现在返回正确的结果。 以前,函数错误地截断了剩余的字符串,而不是在最后一个元素中包含它。

  • 修复了 Photon 中的 url_decodetry_url_decode 错误处理:在 Photon 中,try_url_decode()url_decode() 现在为无效的 URL 编码字符串返回 failOnError = false,而不是让查询失败。

  • Unity Catalog Python UDTF 的共享执行环境:Azure Databricks 现在从同一所有者和 Spark 会话共享 Python 用户自定义表函数(UDTF) 的执行环境。 可选 STRICT ISOLATION 子句可用于禁用 UDDF 的共享,其副作用包括修改环境变量或执行任意代码。

版本 17.1

2025 年 8 月 19 日

此无服务器计算版本大致对应于 Databricks Runtime 17.1

新功能

  • 减少了 Photon 编写器中宽架构的内存使用率:对 Photon 引擎进行了增强,可显著减少宽架构的内存使用率,解决了以前导致内存不足错误的场景。

行为更改

  • 为无效CHECK约束引发的错误:Azure Databricks 现在在约束验证期间无法解析约束表达式时引发AnalysisExceptionCHECK

  • Pulsar 连接器不再公开弹跳城堡:弹跳城堡库现在在 Pulsar 连接器中着色,以防止类路径冲突。 因此,Spark 作业无法再从连接器访问 org.bouncycastle.* 类。 如果代码依赖于 Bouncy Castle,请在无服务器环境中手动安装库。

  • 默认情况下,自动加载程序使用文件事件(如果可用):当加载路径是启用了文件事件的外部位置时,自动加载程序使用文件事件而不是目录列表。 useManagedFileEvents默认值为现在if_available(是false)。 这可以提高引入性能,如果尚未启用文件事件,则会记录警告。

  • Teradata 连接器修复了区分大小写的字符串比较:Teradata 连接器现在默认为 TMODE=ANSI,通过区分大小写来使字符串比较行为与 Azure Databricks 保持一致。 此更改是可配置的,除非他们选择加入,否则不会影响现有用户。

无服务器环境版本 4

2025 年 8 月 13 日

环境版本 4 现在可在无服务器笔记本和作业中使用。 此环境版本包括库升级和 API 更新。 请参阅 无服务器环境版本 4

版本 17.0

2025 年 7 月 24 日

此无服务器计算版本大致对应于 Databricks Runtime 17.0

新功能

  • SQL 过程支持:SQL 脚本现在可以封装在存储为 Unity Catalog 中的可重用资产的 SQL 过程中。 可以使用 CREATE PROCEDURE 命令创建过程,然后使用 CALL 命令调用过程。

  • 为 SQL Functions 设置默认排序规则:使用命令中的新DEFAULT COLLATIONCREATE FUNCTION子句定义函数主体中的STRING参数、返回类型和STRING字面量所使用的默认排序规则。

  • 递归通用表表达式(rCTE)支持:Azure Databricks 现在支持使用 递归通用表表达式(rCTE)导航分层数据。 使用自引用 CTE UNION ALL 来遵循递归关系。

  • PySpark 和 Spark Connect 现在支持 DataFrame df.mergeInto API:PySpark 和 Spark Connect 现在支持 df.mergeInto 该 API。

  • 支持 ALL CATALOGS 在 SCHEMAS SHOW: SHOW SCHEMAS 语法已更新以接受 ALL CATALOGS,允许您循环访问支持命名空间的所有活动目录。 输出属性现在包含一列 catalog ,指示相应命名空间的目录。

  • 液体聚类现在更高效地压缩删除矢量:使用液体聚类的 Delta 表在运行时更高效地应用删除矢量的物理更改。 有关详细信息,请参阅 对 Parquet 数据文件应用更改

  • 允许在 UPDATE/INSERT 列值中使用非确定性表达式进行 MERGE 操作:Azure Databricks 现在允许在更新和插入操作的 列值中使用非确定性表达式。 例如,现在可以使用表达式(例如 rand())为列生成动态值或随机值。

  • 更改 Delta MERGE Python API 以返回 DataFrame 而不是 Unit:Python MERGE API(例如 DeltaMergeBuilder)现在也返回与 SQL API 相同的数据帧,结果相同。

行为更改

  • 自动加载程序增量目录列表选项的行为更改:弃用的自动加载程序 cloudFiles.useIncrementalListing 选项的值现在设置为默认值 false。 因此,此更改会导致自动加载器在每次运行时执行完整的目录列表。 Databricks 不建议使用此选项。 而是将 文件通知模式与文件事件一起使用

  • CREATE VIEW 当列级子句仅适用于具体化视图时,现在将引发错误CREATE VIEW 指定仅对MATERIALIZED VIEW适用的列级子句的命令现在将引发错误。 受影响的子句包括 NOT NULL、指定的数据类型 DEFAULTCOLUMN MASK

无服务器性能目标已正式发布

2025 年 6 月 10 日

现在通常可以为作业和管道选择无服务器性能设置。

启用 “性能优化 ”设置后,工作负载会针对更快的启动和执行时间进行优化。 禁用后,无服务器工作负荷在标准性能模式下运行,该模式针对成本进行了优化,并且启动延迟略高。

有关详细信息,请参阅“选择性能模式”和“选择性能模式”。

版本 16.4

2025 年 5 月 28 日

此无服务器计算版本大致对应于 Databricks Runtime 16.4 LTS

行为更改

  • 修复以遵循数据源缓存计划的选项:此更新确保表读取在缓存所有数据源计划后遵循为这些计划设置的选项,而不仅仅是第一个缓存表读取遵循这些选项。 以前,数据源表读取缓存了第一个计划,但未能在后续查询中考虑不同的选项。

  • 启用标志以在MERGE操作中要求源物化:以前,用户可以通过设置merge.materializeSourcenone来关闭MERGE中的源物化。 启用新标志后,将始终需要进行源具体化,尝试禁用它将会导致错误。 Databricks 计划仅针对以前未更改此配置的客户启用此标志,因此大多数用户不应遇到任何行为更改。

新功能

  • 自动加载程序现在可以清理源目录中已处理的文件:现在可以指示自动加载程序自动移动或删除已处理的文件。 使用 cloudFiles.cleanSource “自动加载”选项来启用此功能。 请参阅 下面的cloudFiles.cleanSource

  • 为从 Delta 表中流式传输添加了类型扩展支持:此版本增加了一些支持,支持从具有扩大类型列数据的 Delta 表进行流式传输,并且支持共享使用 Databricks 到 Databricks Delta 共享功能启用了类型扩大的 Delta 表。 类型扩展功能目前处于公开预览阶段。 请参阅类型拓宽

  • IDENTIFIER DBSQL中现已提供目录操作的支持:您可以在执行以下目录操作时使用该IDENTIFIER子句:

    • CREATE CATALOG
    • DROP CATALOG
    • COMMENT ON CATALOG
    • ALTER CATALOG

    使用此新语法,可以使用为这些作定义的参数动态指定目录名称,从而实现更灵活和可重用的 SQL 工作流。 作为语法示例,请考虑 CREATE CATALOG IDENTIFIER(:param),其中 param 是一个为指定目录名称而提供的参数。 请参阅 IDENTIFIER 条款

  • 合并表达式现在提供自动生成的临时别名:合并表达式的自动生成别名现在以确定性的方式整合 COLLATE 信息。 自动生成的别名是暂时性的(不稳定的),不应依赖。 相反,最佳做法是一致且显式地使用 expression AS alias

  • 向 Python 数据源添加筛选器下推 API 支持:无服务器计算现在支持通过 API 将筛选器下推到 Python 数据源批量读取,这类似于 SupportsPushDownFilters 接口。 请参阅 16.4 LTS 发行说明

  • Python UDF 跟踪回退改进:Python UDF 跟踪现在包括驱动程序和执行程序的帧以及客户端帧,从而生成更好的错误消息,这些错误消息显示更大和更相关的详细信息(例如 UDF 中的帧的行内容)。

  • 视图中的 UNION/EXCEPT/INTERSECT 现在EXECUTE IMMEDIATE返回正确的结果:对具有顶级 UNION/EXCEPT/INTERSECT 和非别名列的临时和持久视图定义的查询以前返回了不正确的结果,因为 UNION/EXCEPT/INTERSECT 关键字被视为别名。 现在,这些查询将正确执行整个集合操作。

  • 数据源缓存计划配置和迁移指南:从文件源表读取将正确遵循查询选项(例如分隔符)。 以前,缓存了第一个查询计划,并忽略了后续选项更改。 若要还原以前的行为,请将 spark.sql.legacy.readFileSourceTableCacheIgnoreOptions 设置为 true

  • 新增 listagg 功能和 string_agg 函数:从此版本开始,可以使用 listaggstring_agg 函数聚合 STRING 组内 BINARY 的值。 请参阅 string_agg

性能模式现在可在无服务器作业上配置

2025 年 4 月 14 日

现在,可以使用作业详细信息页中的 “性能优化 ”设置选择无服务器作业的性能模式。 以前,所有无服务器作业的性能都进行了优化。 现在,可以禁用 性能优化 设置,以在标准性能模式下运行工作负荷。 标准性能模式旨在降低可接受略高一些的启动延迟的工作负载的成本。

连续管道、使用 runs/submit 终结点创建的一次性运行或 SQL 仓库作业任务(包括具体化视图)不支持标准性能模式。

有关性能模式的详细信息,请参阅 “选择性能模式”。

版本 16.3

2025 年 4 月 9 日

此无服务器计算版本大致对应于 Databricks Runtime 16.3

行为更改

  • *改进了在 kafka.sasl.client.callback.handler.class 分配无效值时的错误消息:此版本对在 kafka.sasl.client.callback.handler.class 分配无效值时返回的错误消息进行了更具描述性的修改。

新功能

  • 状态读取者支持已正式发布:现已在无服务器计算中正式发布对读取结构化流式处理查询的状态信息的支持。 请参阅读取结构化流式处理状态信息

  • Delta 表协议降级已正式发布,并具备检查点保护DROP FEATURE 已正式发布,可用于移除 Delta Lake 表功能并降级表协议。 默认情况下,DROP FEATURE 现在会创建受保护的检查点,以实现更优化和简化的降级体验,无需等待时间或历史记录截断。 请参阅删除 Delta Lake 表功能和降级表协议

  • 基于 ANSI SQL/PSM(公共预览版)编写过程 SQL 脚本:现在可以使用基于 ANSI SQL/PSM 的脚本功能通过 SQL 编写过程逻辑,包括控制流语句、局部变量和异常处理。 请参阅 SQL 脚本

  • 表和视图级别默认排序规则:现在可以为表和视图指定默认排序规则。 这简化了表和视图的创建,其中所有或大多数列共享相同的排序规则。 请参阅 排序规则

  • 新的 H3 函数:添加了三个新的 H3 函数: h3_try_coverash3h3_try_coverash3stringh3_try_tessellateaswkb

  • 更改一个 ALTER TABLE 语句中的多个表列:现在可以更改单个 ALTER TABLE 语句中的多个列。 请参阅 ALTER TABLE ... COLUMN 子句

版本 16.2

2025 年 3 月 13 日

此无服务器计算版本大致对应于 Databricks Runtime 16.2

行为更改

  • 在增量共享中,表历史记录默认处于启用状态:使用 SQL 命令 ALTER SHARE <share> ADD TABLE <table> 创建的共享现在默认已启用历史记录共享(WITH HISTORY)。 请参阅 ALTER SHARE

  • 凭据 SQL 语句在凭据类型不匹配时返回错误:现在,如果凭据管理 SQL 语句中指定的凭据类型与凭据参数的类型不匹配,则返回错误,并且该语句未运行。

新功能

  • 在生成的列表达式中使用 timestampdifftimestampadd:现在可以在 Delta Lake 生成的列表达式中使用 timestampdifftimestampadd 函数。 请参阅 Delta Lake 生成的列

  • 更新后 DESCRIBE TABLE 将元数据作为结构化 JSON 返回:你现在可以使用 DESCRIBE TABLE AS JSON 命令将表元数据以 JSON 文档形式返回。 JSON 输出的结构比默认的可读报表更结构化,可用于以编程方式解释表的架构。 若要了解详细信息,请参阅 DESCRIBE TABLE AS JSON

  • 不区分尾部空白的排序规则:无服务器现在支持不区分尾部空白的排序规则。 例如,这些排序规则将 'Hello''Hello ' 视为相等。 若要了解详细信息,请参阅 RTRIM 排序规则

Bug 修复

  • 改进了增量克隆处理:此版本包括对边缘情况的修复,其中增量 CLONE 可能会将已从源表复制到目标表的文件重新复制。 请参阅克隆 Azure Databricks 上的表

在无服务器笔记本上提供高内存设置(公共预览版)

2025 年 2 月 7 日

现在可以为无服务器计算笔记本工作负荷配置更高的内存大小。 此设置可以同时应用于交互式和计划的笔记本工作负载。

高内存无服务器计算的 DBU 发射率高于标准内存无服务器计算。

有关详细信息,请参阅 使用高内存无服务器计算

版本 16.1

2025 年 2 月 5 日

此无服务器计算版本大致对应于 Databricks Runtime 16.0Databricks Runtime 16.1

新功能

  • Avro 对递归架构的支持: 现在可以将 recursiveFieldMaxDepth 选项用于 from_avro 函数和 avro 数据源。 此选项设置 Avro 数据源上架构递归的最大深度。 请参阅读取和写入流 Avro 数据
  • 扩展了对 Avro 的 Confluent 架构注册表的支持:无服务器现在支持使用 Confluent 架构注册表的 Avro 架构引用。 请参阅向外部 Confluent 架构注册表进行身份验证
  • 强制对具有液体聚类的表重新聚类: 现在可以使用 OPTIMIZE FULL 语法来强制重新聚类启用了液体聚类的表中的所有记录。 请参阅为所有记录强制执行重新聚类分析
  • Python 的 Delta API 现在支持标识列: 现在可以使用用于 Python 的 Delta API 创建具有标识列的表。 请参阅在 Delta Lake 中使用标识列
  • 在流式写入期间创建流式聚集表: 现在可以使用 clusterBy 在创建使用结构化流式写入的新表时启用液体集群。 请参阅启用液体聚类
  • 对 OPTIMIZE FULL 子句的支持:无服务器计算现在支持 OPTIMIZE FULL 子句。 此子句优化使用液态聚类的表中的所有记录,包括可能之前已进行过聚类的数据。
  • 对 INSERT 和表引用中的 WITH 选项规范的支持:无服务器计算现在支持选项规范,该规范所适用的 INSERT 语句的表引用和表名可用于控制数据源的行为。
  • 新的 SQL 函数: 以下 SQL 函数现在可用于无服务器计算:
    • try_url_decodeurl_decode的容错版本。
    • 如果 函数的输入表达式为zeroifnull()NULL 将返回 0。
    • nullifzero 在输入为 0 时返回 NULL,在输入不为 0 时返回其输入。
    • dayname(expr) 会返回给定日期的星期几的三个字母英语首字母缩略词。
    • uniform(expr1, expr2 [,seed]) 返回一个在指定数值范围内具有独立的同分布值的随机值。
    • randstr(length) 返回一个包含 length 个字母数字字符的随机字符串。
  • 支持。 使用 withSchemaEvolution() 可在 MERGE 操作期间启用自动架构演变。 例如,mergeBuilder.whenMatched(...).withSchemaEvolution().execute()}}
  • Apache Spark 中对排序规则的支持现已进入公开预览: 现在可以将具备语言感知能力、不区分大小写以及不区分访问权限的排序规则分配给 STRING 列和表达式。 这些排序规则用于字符串比较、排序、分组操作,并且用在许多字符串函数中。 请参阅 排序规则
  • Delta Lake 中对排序规则的支持为公共预览版: 现在可以在创建或更改 Delta 表时为列定义排序规则。 请参阅对 Delta Lake 的排序规则支持
  • 清空的 LITE 模式为公共预览版:现在可以使用 来执行利用 Delta 事务日志中的元数据的较轻量清空操作VACUUM table_name LITE。 请参阅 完整版与简化版VACUUM
  • 支持参数化 USE CATALOG with IDENTIFIER 子句: 现在支持 IDENTIFIER 语句。 借助此支持,你可以根据字符串变量或参数标记来参数化当前目录。
  • 对表和视图的 COMMENT ONCOLUMN 支持:COMMENT ON 语句现在支持更改视图和表列的注释。
  • 更多函数的命名参数调用: 以下函数支持 命名参数调用
  • Hive 元存储支持 SYNC METADATA 命令的 REPAIR TABLE 参数: 现在,可以将 SYNC METADATA 参数与 REPAIR TABLE 命令一起使用来更新 Hive 元存储托管表的元数据。 请参阅 REPAIR TABLE
  • 增强压缩 Apache Arrow 批次的数据完整性:为了进一步防止数据损坏,现在每个 LZ4 压缩 Arrow 批次都包含 LZ4 内容和块校验和。 请参阅 LZ4 帧格式说明
  • 内置的 Oracle JDBC 驱动程序: 无服务器计算现在内置了 Oracle JDBC 驱动程序。 如果通过 DriverManager 使用客户上传的 JDBC 驱动程序 JAR,则必须重写脚本以显式使用自定义 JAR。 否则,将使用内置驱动程序。 此驱动程序仅支持 Lakehouse 联盟。 对于其他用例,您需要提供自己的驱动程序。
  • 通过路径访问 Delta 表的详细错误信息: 现已提供通过路径访问 Delta 表的全新错误消息体验。 所有异常现在都转发给用户。 现在,DELTA_MISSING_DELTA_TABLE 异常被保留用于无法将基础文件读取为 Delta 表的情况。

行为更改

  • 重大更改:托管 RStudio 已到达生命周期结束:在此版本中,Databricks 托管的 RStudio Server 在任何无服务器计算的 Azure Databricks 工作区中均不可用。 若要了解详细信息并查看 RStudio 的替代项列表,请参阅 连接到 Databricks 托管的 RStudio Server
  • 重大更改:删除对 byteshortintlong 类型更改为更宽类型的支持:为确保 Delta 和 Apache Iceberg 表的行为一致,无法再将以下数据类型更改应用于启用了类型扩展功能的表:

    • byteshortintlong 转换为 decimal
    • byteshortint 转换为 double
  • 支持正确解析嵌套字符分组中的否定正则表达式模式: 此版本包括一项更改,以支持正确解析嵌套字符分组中的否定正则表达式模式。 例如, [^[abc]] 将分析为“不是”abc“之一的任何字符。

    另外,Photon 行为与嵌套字符类的 Spark 不一致。 包含嵌套字符类的正则表达式将不再使用 Photon,而改为使用 Spark。 嵌套字符类是包含方括号内方括号的任何模式,例如 [[a-c][1-3]]

  • MERGE改进 Delta Lake 中的重复匹配检测:MERGE 现在会考虑在 WHEN MATCHED 子句中指定的条件。 请参阅使用合并以更新插入的方式插入到 Delta Lake 表中

  • addArtifact() 功能现在在计算类型之间保持一致: 使用 addArtifact(archive = True) 向无服务器计算添加依赖项时,会自动解压缩存档。

Bug 修复

  • 时区偏移量在序列化为 CSV、JSON 和 XML 时现在包括秒数:以前,包含秒数的时间戳时区偏移量(这在 1900 年之前的时间戳中很常见)在序列化为 CSV、JSON 和 XML 时会省略秒数。 默认时间戳格式化程序已修复,现在返回这些时间戳的正确偏移值。

其他更改

  • cloudFiles 结构化流式处理源重命名了错误代码:以下错误代码已重新命名:
    • _LEGACY_ERROR_TEMP_DBR_0143 已重命名为 CF_INCORRECT_STREAM_USAGE
    • _LEGACY_ERROR_TEMP_DBR_0260 已重命名为 CF_INCORRECT_BATCH_USAGE

版本 15.4

2024 年 10 月 28 日

此无服务器计算版本大致对应于 Databricks Runtime 15.4

新功能

  • UTF-8 验证函数:此版本引入了以下用于验证 UTF-8 字符串的函数:
    • is_valid_utf8 验证字符串是否为有效的 UTF-8 字符串。
    • make_valid_utf8 使用替换字符将可能无效的 UTF-8 字符串转换为有效的 UTF-8 字符串。
    • 如果输入不是有效的 UTF-8 字符串,则 validate_utf8 会引发错误。
    • 如果输入不是有效的 UTF-8 字符串,则 try_validate_utf8 返回 NULL
  • 使用 ALTER TABLE 启用 UniForm Iceberg:现在可以在现有表上启用 UniForm Iceberg,而无需重写数据文件。 请参阅对现有表启用 Iceberg 读取
  • try_url_decode函数: 此版本引入了 try_url_decode 函数,该函数对 URL 编码的字符串进行解码。 如果字符串的格式不正确,该函数将返回 NULL,而不是引发错误。
  • (可选)允许优化器依赖于未强制的外键约束:为了提高查询性能,您现在可以在 RELYFOREIGN KEY 表时,在约束上指定关键字。
  • 并行化作业运行实现选择性覆盖:使用 replaceWhere 进行的选择性覆盖现在可以并行运行删除数据和插入新数据的作业,从而提高查询性能和群集利用率。
  • 改进了具有选择性覆盖的变更数据馈送的性能: 对具有变更数据馈送的表使用 replaceWhere 进行选择性覆盖时,插入的数据不再写入单独的变更数据文件。 这些操作使用基础 Parquet 数据文件中存在的隐藏 _change_type 列,在没有写入放大的情况下记录更改。
  • 改进了命令的 COPY INTO 查询延迟: 此版本包括改进命令的 COPY INTO 查询延迟的更改。 此改进是通过使 RocksDB 状态存储的状态加载变为异步来实现的。 进行此更改后,你应会看到具有较大状态的查询(例如,具有大量已引入文件的查询)的启动时间有所改善。
  • 支持删除 check 约束表功能:现在可使用 checkConstraints 从 Delta 表中删除 ALTER TABLE table_name DROP FEATURE checkConstraints 表功能。 请参阅禁用 check 约束

行为更改

  • 视图的架构绑定更改:当视图的基础查询中的数据类型与视图首次创建时所使用的数据类型不一致时,如果无法进行安全的强制转换,则 Databricks 将不再引发对视图的引用错误。

    相反,视图将在可能的情况下使用常规强制转换规则进行补偿。 此更改使 Databricks 能够更好地容许表架构的更改。

  • 禁止在布尔表达式外部使用未记录的 ! 语法来代替 NOT:Databricks 将不再容许在布尔逻辑之外将 ! 用作 NOT 的同义词。 此更改可减少混淆,与 SQL 标准保持一致,并使 SQL 更具可移植性。 例如:

    CREATE ... IF ! EXISTS, IS !NULL, ! NULL 列或字段属性、! IN!BETWEEN 必须替换为:

    CREATE ... IF NOT EXISTS, IS NOT NULL, NOT NULL 列或字段属性、NOT INNOT BETWEEN

    布尔前缀运算符!(例如 !is_mgr!(true AND false))不受此更改的影响。

  • 不允许视图中未记录和未处理的列定义语法部分:Databricks 支持具有命名列和列注释的 CREATE VIEW

    语法中已容许列类型、NOT NULL 约束或 DEFAULT 的规范,但没有实际效果。 Databricks 将移除此语法容许。 这样做可减少混淆,与 SQL 标准保持一致,并可以在将来进行增强。

  • Spark 和 Photon 中 Base64 解码错误的一致性处理: 该版本更改了 Photon 处理 Base64 解码错误的方法,以与 Spark 的处理方式一致。 在进行这些更改之前,Photon 和 Spark 的代码生成过程有时未能引发解析异常,而 Spark 在解释执行中则正确引发了 IllegalArgumentExceptionConversionInvalidInputError。 此更新确保 Photon 在发生 Base64 解码错误时始终引发与 Spark 相同的异常,这样就提供了更可预测和更可靠的错误处理。

  • 在无效列上添加 CHECK 约束现在会返回 UNRESOLVED_COLUMN.WITH_SUGGESTION 错误类:为了提供在有用的错误消息,在 Databricks Runtime 15.3 及更高版本中,包含引用无效列名的的 ALTER TABLE ADD CONSTRAINT 约束的 CHECK 语句会返回 UNRESOLVED_COLUMN.WITH_SUGGESTION 错误类。 以前,会返回一个 INTERNAL_ERROR

JDK 从 JDK 8 升级到 JDK 17

2024 年 8 月 15 日

笔记本和工作流的无服务器计算已从服务器端的 Java 开发工具包 (JDK) 8 迁移至 JDK 17。 此升级包括以下行为变更:

  • 对正则表达式模式的正确分析,在嵌套字符分组中使用求反:通过此升级,Azure Databricks 现在支持对正则表达式模式的正确分析,并在嵌套字符分组中使用求反。 例如, [^[abc]] 将分析为“不是”abc“之一的任何字符。

    另外,Photon 行为与嵌套字符类的 Spark 不一致。 包含嵌套字符类的正则表达式将不再使用 Photon,而改为使用 Spark。 嵌套字符类是包含方括号内方括号的任何模式,例如 [[a-c][1-3]]

版本 15.1

2024 年 7 月 23 日

此无服务器计算版本大致对应于 Databricks Runtime 15.1

新功能

支持 * 子句中的 star (WHERE) 语法:你现在可以使用 * 子句中的 star (WHERE) 语法,来引用 SELECT 列表中的所有列。

例如,SELECT * FROM VALUES(1, 2) AS T(a1, a2) WHERE 1 IN(T.*)

Changes

改进了 JSON 分析的错误恢复:用于 from_json() 和 JSON 路径表达式的 JSON 分析程序现在可以更快地从格式不正确的语法中恢复,从而减少数据丢失。

当在结构字段、数组值、映射键或映射值中遇到格式错误的 JSON 语法时,JSON 分析程序现在将仅针对不可读字段、键或元素返回 NULL。 后续的字段、键或元素将会被正确解析。 在此更改之前,JSON 分析程序放弃了对数组、结构或映射进行分析,并对剩余内容返回了 NULL

版本 14.3

2024 年 4 月 15 日

这是初始无服务器计算版本。 此版本大致对应于 Databricks Runtime 14.3,某些修改会删除对某些非无服务器和旧功能的支持。

支持的 Spark 配置参数

若要在无服务器计算中自动配置 Spark,Azure Databricks 已删除对手动设置大多数 Spark 配置的支持。 若要查看支持的 Spark 配置参数的列表,请参阅 为无服务器笔记本和作业配置 Spark 属性

如果设置不支持的 Spark 配置,则无服务器计算上运行的作业将失败。

已弃用 input_file 函数

已弃用 input_file_name()input_file_block_length()input_file_block_start() 函数。 强烈建议不要使用这些函数。

请改用文件元数据列来检索文件元数据信息。

行为更改

无服务器计算版本 2024.15 包括以下行为变更:

  • unhex(hexStr) bug 修复:使用 unhex(hexStr) 函数时,hexStr 始终向左填充整个字节。 以前,unhex 函数会忽略第一个半字节。 例如:unhex('ABC') 现在会生成 x'0ABC' 而不是 x'BC'
  • 自动生成的列别名现已稳定:在没有用户指定的列别名的情况下引用表达式结果时,此自动生成的别名现在是稳定的。 新算法可能会导致具体化视图等功能中使用的、先前自动生成的名称发生更改。
  • 现在始终会填充使用 CHAR 类型字段的表扫描:Delta 表、某些 JDBC 表和外部数据源以非填充形式存储 CHAR 数据。 读取时,Azure Databricks 现在会用空格将数据填充到声明的长度,以确保语义上的正确性。
  • 从 BIGINT/DECIMAL 强制转换为 TIMESTAMP 会引发溢出值异常:Azure Databricks 允许通过将值视为距 Unix 纪元的秒数,来从 BIGINT 和 DECIMAL 强制转换为 TIMESTAMP。 以前,Azure Databricks 将返回溢出的值,但现在会在溢出时引发异常。 使用 try_cast 返回 NULL 而不是异常。
  • 改进了 PySpark UDF 执行,以匹配专用计算中 UDF 执行的确切行为: 已进行以下更改:
    • 采用字符串返回类型的 UDF 不再将非字符串值隐式转换为字符串。 以前,采用 str 返回类型的 UDF 会将 str(..) 包装器应用于结果,而不管返回值的实际数据类型如何。
    • 采用 timestamp 返回类型的 UDF 不再隐式将时区转换应用于时间戳。