无服务器计算发行说明
重要
此功能目前以公共预览版提供。 有关资格和启用的信息,请参阅启用无服务器计算公共预览版。
本文介绍笔记本和工作流的无服务器计算当前可用和即将推出的功能和行为。
Databricks 定期发布无服务器计算的更新。 所有用户都会获得将在短时间内推出的相同更新。 请参阅如何推出版本?。
即将发生的行为变更
本部分重点介绍下一个无服务器计算版本中发生的行为变更。 将这些更改推送到生产环境后,它们将添加到发行说明中。
发行说明
本部分包括无服务器计算的发行说明。 发行说明按年份和周次进行组织。 无服务器计算始终使用此处列出的最新发行版本来运行。
无服务器计算版本 2024.15
2024 年 4 月 15 日
无服务器计算版本 2024.15 已发布到生产环境。 这是初始的无服务器计算版本,大致对应于 Databricks Runtime 14.3,但其中进行了一些修改,去除了对某些非无服务器和旧功能的支持。
此版本包括以下更新:
- 不支持 Spark 配置
- 不支持缓存 API 和 SQL 命令
- 不支持全局临时视图
- 不支持 CREATE FUNCTION(外部)
- 不支持 Hive SerDe 表
- 不支持 Hive 变量
- 已弃用 input_file 函数
- 行为更改
不支持 Spark 配置
为了在无服务器计算上自动完成 Spark 配置,Databricks 去除了对大多数 Spark 配置的支持。 你只能在 Spark 配置中设置 spark.sql.legacy.timeParserPolicy
和 spark.sql.session.timeZone
。
如果你尝试进行任何其他 Spark 配置,该配置将无法运行。
不支持缓存 API 和 SQL 命令
不支持使用数据帧和 SQL 缓存 API。 使用其中的任何 API 或 SQL 命令都会导致异常。
不支持的 API:
- df.cache()、df.persist()
- df.unpersist()
- spark.catalog.cacheTable()
- spark.catalog.uncacheTable()
- spark.catalog.clearCache()
不支持的 SQL 命令:
不支持全局临时视图
不支持创建全局临时视图。 使用以下任何命令都会导致异常:
Databricks 建议改用会话临时视图,或创建需要进行跨会话数据传递的表。
不支持 CREATE FUNCTION(外部)
不支持 CREATE FUNCTION(外部)命令。 使用此命令会导致异常。
Databricks 建议改用 CREATE FUNCTION(SQL 和 Python)来创建 UDF。
不支持 Hive SerDe 表
不支持 Hive SerDe 表。 此外,不支持用于将数据加载到 Hive SerDe 表中的相应 LOAD DATA 命令。 使用该命令会导致异常。
对数据源的支持仅限于 AVRO、BINARYFILE、CSV、DELTA、JSON、KAFKA、ORC、PARQUET、ORC、TEXT 和 XML。
不支持 Hive 变量
不支持使用 ${var}
语法的 Hive 变量(例如 ${env:var}
、${configName}
、${system:var}
和 spark.sql.variable
)或配置变量引用。 使用 Hive 变量会导致异常。
请改用 DECLARE VARIABLE、SET VARIABLE 和 SQL 会话变量引用以及参数标记(“?”或“:var”)来声明、修改和引用会话状态。 在许多情况下,也可以使用 IDENTIFIER 子句来参数化对象名称。
已弃用 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 数据。 读取时,Databricks 现在将用空格填充数据以达到声明的长度,从而确保语义正确。 - 从 BIGINT/DECIMAL 强制转换为 TIMESTAMP 会引发溢出值异常:Databricks 允许通过将值视为距 Unix 纪元的秒数,来从 BIGINT 和 DECIMAL 强制转换为 TIMESTAMP。 以前,Databricks 会返回溢出的值,但现在,在发生溢出的情况下会引发异常。 使用
try_cast
返回 NULL 而不是异常。 - PySpark UDF 执行已得到改进,以匹配单用户计算上 UDF 执行的确切行为:已做出以下更改:
- 采用字符串返回类型的 UDF 不再将非字符串值隐式转换为字符串。 以前,采用
str
返回类型的 UDF 会将str(..)
包装器应用于结果,而不管返回值的实际数据类型如何。 - 采用
timestamp
返回类型的 UDF 不再隐式将时区转换应用于时间戳。
- 采用字符串返回类型的 UDF 不再将非字符串值隐式转换为字符串。 以前,采用
系统环境
无服务器计算包括以下系统环境:
- 操作系统:Ubuntu 22.04.3 LTS
- Python:3.10.12
- Delta Lake: 3.1.0
已安装的 Python 库
库 | 版本 | 库 | 版本 | 库 | 版本 |
---|---|---|---|---|---|
anyio | 3.5.0 | argon2-cffi | 21.3.0 | argon2-cffi-bindings | 21.2.0 |
asttokens | 2.0.5 | astunparse | 1.6.3 | attrs | 22.1.0 |
backcall | 0.2.0 | beautifulsoup4 | 4.11.1 | black | 22.6.0 |
bleach | 4.1.0 | blinker | 1.4 | boto3 | 1.24.28 |
botocore | 1.27.96 | cachetools | 5.3.2 | certifi | 2022.12.7 |
cffi | 1.15.1 | chardet | 4.0.0 | charset-normalizer | 2.0.4 |
单击 | 8.0.4 | comm | 0.1.2 | contourpy | 1.0.5 |
密码系统 | 39.0.1 | cycler | 0.11.0 | Cython | 0.29.32 |
databricks-connect | 14.3.1 | databricks-sdk | 0.20.0 | dbu-python | 1.2.18 |
debugpy | 1.6.7 | decorator | 5.1.1 | defusedxml | 0.7.1 |
distlib | 0.3.8 | docstring-to-markdown | 0.11 | entrypoints | 0.4 |
执行 | 0.8.3 | facets-overview | 1.1.1 | fastjsonschema | 2.19.1 |
filelock | 3.13.1 | fonttools | 4.25.0 | google-auth | 2.28.1 |
googleapis-common-protos | 1.62.0 | grpcio | 1.62.0 | grpcio-status | 1.62.0 |
httplib2 | 0.20.2 | idna | 3.4 | importlib-metadata | 4.6.4 |
ipyflow-core | 0.0.198 | ipykernel | 6.25.0 | ipython | 8.14.0 |
ipython-genutils | 0.2.0 | ipywidgets | 7.7.2 | jedi | 0.18.1 |
jeepney | 0.7.1 | Jinja2 | 3.1.2 | jmespath | 0.10.0 |
joblib | 1.2.0 | jsonschema | 4.17.3 | jupyter-client | 7.3.4 |
jupyter-server | 1.23.4 | jupyter_core | 5.2.0 | jupyterlab-pygments | 0.1.2 |
jupyterlab-widgets | 1.0.0 | keyring | 23.5.0 | kiwisolver | 1.4.4 |
launchpadlib | 1.10.16 | lazr.restfulclient | 0.14.4 | lazr.uri | 1.0.6 |
lxml | 4.9.1 | MarkupSafe | 2.1.1 | matplotlib | 3.7.0 |
matplotlib-inline | 0.1.6 | mccabe | 0.7.0 | mistune | 0.8.4 |
more-itertools | 8.10.0 | mypy-extensions | 0.4.3 | nbclassic | 0.5.2 |
nbclient | 0.5.13 | nbconvert | 6.5.4 | nbformat | 5.7.0 |
nest-asyncio | 1.5.6 | nodeenv | 1.8.0 | 笔记本 | 6.5.2 |
notebook_shim | 0.2.2 | numpy | 1.23.5 | oauthlib | 3.2.0 |
打包 | 23.2 | pandas | 1.5.3 | pandocfilters | 1.5.0 |
parso | 0.8.3 | pathspec | 0.10.3 | patsy | 0.5.3 |
pexpect | 4.8.0 | pickleshare | 0.7.5 | Pillow | 9.4.0 |
pip | 22.3.1 | platformdirs | 2.5.2 | plotly | 5.9.0 |
pluggy | 1.0.0 | prometheus-client | 0.14.1 | prompt-toolkit | 3.0.36 |
protobuf | 4.25.3 | psutil | 5.9.0 | psycopg2 | 2.9.3 |
ptyprocess | 0.7.0 | pure-eval | 0.2.2 | py4j | 0.10.9.7 |
pyarrow | 8.0.0 | pyarrow-hotfix | 0.5 | pyasn1 | 0.5.1 |
pyasn1-modules | 0.3.0 | pyccolo | 0.0.52 | pycparser | 2.21 |
pydantic | 1.10.6 | pyflakes | 3.1.0 | Pygments | 2.11.2 |
PyGObject | 3.42.1 | PyJWT | 2.3.0 | pyodbc | 4.0.32 |
pyparsing | 3.0.9 | pyright | 1.1.294 | pyrsistent | 0.18.0 |
python-dateutil | 2.8.2 | python-lsp-jsonrpc | 1.1.1 | python-lsp-server | 1.8.0 |
pytoolconfig | 1.2.5 | pytz | 2022.7 | pyzmq | 23.2.0 |
请求 | 2.28.1 | rope | 1.7.0 | rsa | 4.9 |
s3transfer | 0.6.2 | scikit-learn | 1.1.1 | scipy | 1.10.0 |
seaborn | 0.12.2 | SecretStorage | 3.3.1 | Send2Trash | 1.8.0 |
setuptools | 65.6.3 | 6 | 1.16.0 | sniffio | 1.2.0 |
soupsieve | 2.3.2.post1 | ssh-import-id | 5.11 | stack-data | 0.2.0 |
statsmodels | 0.13.5 | tenacity | 8.1.0 | terminado | 0.17.1 |
threadpoolctl | 2.2.0 | tinycss2 | 1.2.1 | tokenize-rt | 4.2.1 |
tomli | 2.0.1 | tornado | 6.1 | traitlets | 5.7.1 |
typing_extensions | 4.4.0 | ujson | 5.4.0 | unattended-upgrades | 0.1 |
urllib3 | 1.26.14 | virtualenv | 20.16.7 | wadllib | 1.3.6 |
wcwidth | 0.2.5 | webencodings | 0.5.1 | websocket-client | 0.58.0 |
whatthepatch | 1.0.2 | wheel | 0.38.4 | widgetsnbextension | 3.6.1 |
yapf | 0.33.0 | Zipp | 1.0.0 |
限制
无服务器计算基于共享计算体系结构。 下面列出了从共享计算继承的最重要限制,以及其他特定于无服务器的限制。 有关共享计算限制的完整列表,请参阅 Unity Catalog 的计算访问模式限制。
一般限制
- 不支持 Scala 和 R。
- 编写 SQL 时仅支持 ANSI SQL。
- 不支持 Spark RDD API。
- 不支持 Spark 上下文 (sc)、
spark.sparkContext
和sqlContext
。 - 无法访问 DBFS。
- 不支持 Databricks 容器服务。
- 不支持 Web 终端。
- 结构化流式处理查询需要调用
query.awaitTermination()
以确保查询完成。 - 任何查询的运行时间都不能超过 48 小时。
- 必须使用 Unity Catalog 连接到外部数据源。 使用外部位置访问云存储。
- 对数据源的支持仅限于 AVRO、BINARYFILE、CSV、DELTA、JSON、KAFKA、ORC、PARQUET、ORC、TEXT 和 XML。
- 用户定义的函数 (UDF) 无法访问 Internet。
- 单个行的最大大小不得超过 128MB。
- Spark UI 不可用。 请改用查询配置文件来查看有关 Spark 查询的信息。 请参阅查询配置文件。
机器学习限制
- 不支持用于机器学习的 Databricks Runtime 和 Apache Spark MLlib。
- 不支持 GPU。
笔记本限制
- 笔记本可以访问 8GB 内存,但内存量无法配置。
- 笔记本范围的库不会跨开发会话进行缓存。
- 在用户之间共享笔记本时,不支持共享 TEMP 表和视图。
- 不支持对笔记本中的数据帧使用自动完成和变量资源管理器。
工作流限制
- 工作流无服务器计算的驱动程序大小当前是固定的,无法更改。
- 不会为每个任务运行隔离任务日志。 日志将包含多个任务的输出。
- 笔记本任务不支持任务库。 请改用笔记本范围的库。 请参阅作用域为笔记本的 Python 库。
特定于计算的限制
不支持以下特定于计算的功能:
- 计算策略
- 计算范围的 init 脚本
- 计算范围的库,包括自定义数据源和 Spark 扩展。 请改用笔记本范围的库。
- 计算级数据访问配置。 因此,无法通过云路径上的 HMS 或使用没有嵌入凭据的 DBFS 装载来访问表和文件。
- 实例池
- 计算事件日志
- Apache Spark 计算配置和环境变量
常见问题 (FAQ)
如何推出版本?
无服务器计算是一种无版本产品,这意味着,Databricks 会自动升级无服务器计算运行时,以支持平台的增强和升级。 所有用户都会获得将在短时间内推出的相同更新。
如何确定我正在运行的版本?
无服务器工作负载始终在最新的运行时版本上运行。 有关最新版本,请参阅发行说明。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈