本文介绍了笔记本和作业的无服务器计算的当前限制。 它首先概述了最重要的注意事项,然后提供一个全面的限制参考列表。
一般限制
在新建工作负荷或将工作负荷迁移到无服务器计算之前,请先考虑以下限制:
- 不支持 R。
- 仅支持 Spark Connect API。 不支持 Spark RDD API。
- Spark Connect(由无服务器计算使用)将分析和名称解析推迟到执行时间,这可能会更改代码的行为。 请参阅 “将 Spark 连接与 Spark 经典版进行比较”。
- 无服务器计算适用于所有工作区用户。
- 不支持笔记本标记。 使用 无服务器预算策略 标记无服务器使用情况。
- 编写 SQL 时,ANSI SQL 是默认值。 将
spark.sql.ansi.enabled设置为false以选择退出 ANSI 模式。
- 不支持 Databricks 容器服务。
- 必须使用 Unity Catalog 连接到外部数据源。 使用外部位置访问云存储。
- 用户定义的函数 (UDF) 无法访问 Internet。 因此,不支持 CREATE FUNCTION(外部)命令。 Databricks 建议使用 CREATE FUNCTION(SQL 和 Python)来创建 UDF。
- 用户定义的自定义代码(例如 UDF),
map并且mapPartitions内存使用量不能超过 1 GB。 - 使用
spark.createDataFrame本地数据创建数据帧时,行大小不能超过 128MB。 - Spark UI 不可用。 请改用查询配置文件来查看有关 Spark 查询的信息。 请参阅查询配置文件。
- 使用无服务器笔记本和作业时,Spark 日志不可用。 用户只能访问客户端应用程序日志。
- 仅当工作区位于同一区域且目标工作区未配置 IP ACL 或前端 PrivateLink 时,才允许跨工作区访问。
- 不支持全局临时视图。 Databricks 建议使用 会话临时视图 或创建需要跨会话数据传递的表。
- 不支持 Maven 坐标。
流式处理限制
- 不支持默认的或基于时间的触发器间隔。 仅支持
Trigger.AvailableNow。 请参阅配置结构化流式处理触发器间隔。 - 标准访问模式的所有流媒体限制也适用。 请参阅流式处理限制。
笔记本限制
- 笔记本不支持 Scala 和 R。
- 笔记本不支持 JAR 库。 有关解决方法,请参阅无服务器计算的最佳做法。 支持作业中的 JAR 任务。 请参阅用于作业的 JAR 任务。
- 笔记本范围的库不会跨开发会话进行缓存。
- 在用户之间共享笔记本时,不支持共享 TEMP 表和视图。
- 不支持对笔记本中的数据帧使用自动完成和变量资源管理器。
- 默认情况下,新笔记本的格式保存
.ipynb。 如果笔记本以源格式保存,则无法正确捕获无服务器元数据,并且某些功能可能无法按预期工作。
作业限制
- 不会为每个任务运行隔离任务日志。 日志将包含多个任务的输出。
- 笔记本任务不支持任务库。 请改用笔记本范围的库。 请参阅作用域为笔记本的 Python 库。
- 默认情况下,无服务器任务没有查询执行超时。 可以使用该
spark.databricks.execution.timeout属性为作业查询设置执行超时。 有关详细信息,请参阅 为无服务器笔记本和作业配置 Spark 属性。
特定于计算的限制
不支持以下特定于计算的功能:
- 计算策略
- 计算范围的 init 脚本
- 计算范围的库,包括自定义数据源和 Spark 扩展。 请改用笔记本范围的库。
- 实例池
- 计算事件日志
- 大多数 Apache Spark 计算配置。 有关受支持的配置列表,请参阅 为无服务器笔记本和作业配置 Spark 属性。
- 环境变量。 相反,Databricks 建议使用 小组件 来创建 作业和任务参数。
缓存限制
元数据缓存在无服务器计算会话中。 因此,切换目录时,会话上下文可能无法完全重置。 若要清除会话上下文,请重置无服务器计算资源或启动新会话。
无服务器计算不支持数据帧和 SQL 缓存 API。 使用这些 API 或 SQL 命令中的任何一个会导致异常。
Hive 限制
不支持 Hive SerDe 表。 此外,不支持用于将数据加载到 Hive SerDe 表中的相应 LOAD DATA 命令。 使用该命令会导致异常。
对数据源的支持仅限于 AVRO、BINARYFILE、CSV、DELTA、JSON、KAFKA、ORC、PARQUET、ORC、TEXT 和 XML。
不支持使用 语法的
${env:var}(例如${configName}、${system:var}、spark.sql.variable和${var})或配置变量引用。 使用 Hive 变量会导致异常。请改用 DECLARE VARIABLE、SET VARIABLE 和 SQL 会话变量引用 以及参数标记(“?”或“:var”)来声明、修改和引用会话状态。 在许多情况下,可以使用 IDENTIFIER 子句 来参数化对象名称。
支持的数据源
无服务器计算支持 DML作的以下数据源(写入、更新、删除):
CSVJSONAVRODELTAKAFKAPARQUETORCTEXTUNITY_CATALOGBINARYFILEXMLSIMPLESCANICEBERG
无服务器计算支持以下数据源进行读取作:
CSVJSONAVRODELTAKAFKAPARQUETORCTEXTUNITY_CATALOGBINARYFILEXMLSIMPLESCANICEBERGMYSQLPOSTGRESQLSQLSERVERREDSHIFTSNOWFLAKE-
SQLDW(Azure Synapse) DATABRICKSBIGQUERYORACLESALESFORCESALESFORCE_DATA_CLOUDTERADATAWORKDAY_RAASMONGODB