本文介绍了笔记本和作业的无服务器计算的当前限制。 它首先概述了最重要的注意事项,然后提供一个全面的限制参考列表。
限制概述
在新建工作负荷或将工作负荷迁移到无服务器计算之前,请先考虑以下限制:
- Python 和 SQL 是唯一受支持的语言。
- 仅支持 Spark 连接 API。 不支持 Spark RDD API。
- 不支持 JAR 库。 有关解决方法,请参阅无服务器计算的最佳做法。
- 无服务器计算适用于所有工作区用户。
- 不支持笔记本标记。 使用 无服务器预算策略 标记无服务器使用情况。
- 对于流式处理,只能使用增量批处理逻辑。 不支持默认的或基于时间的触发器间隔。 请参阅流式处理限制。
限制参考列表
以下部分列出了无服务器计算的当前限制。
无服务器计算基于 Databricks 标准访问模式计算体系结构(以前称为共享访问模式)。 下面列出了从标准访问模式继承的最相关的限制,以及其他无服务器特定的限制。 有关标准访问模式限制的完整列表,请参阅 Unity 目录的计算访问模式限制。
一般限制
- 不支持 Scala 和 R。
- 编写 SQL 时,ANSI SQL 是默认值。 将
spark.sql.ansi.enabled
设置为false
以选择退出 ANSI 模式。 - 不支持 Spark RDD API。
- 不支持 Spark 上下文 (sc)、
spark.sparkContext
和sqlContext
。
- 不支持 Databricks 容器服务。
- 默认情况下,无服务器笔记本中的 Spark 查询不能运行超过 9000 秒。 可以使用此属性进行
spark.databricks.execution.timeout
配置。 有关详细信息,请参阅 为无服务器笔记本和作业配置 Spark 属性。 此限制不适用于无服务器作业。 - 必须使用 Unity Catalog 连接到外部数据源。 使用外部位置访问云存储。
- 对数据源的支持仅限于 AVRO、BINARYFILE、CSV、DELTA、JSON、KAFKA、ORC、PARQUET、ORC、TEXT 和 XML。
- 用户定义的函数 (UDF) 无法访问 Internet。 因此,不支持 CREATE FUNCTION(外部)命令。 Databricks 建议使用 CREATE FUNCTION(SQL 和 Python)来创建 UDF。
- 单个行的最大大小不得超过 128MB。
- Spark UI 不可用。 请改用查询配置文件来查看有关 Spark 查询的信息。 请参阅查询配置文件。
- 使用无服务器笔记本和作业时,Spark 日志不可用。 用户只能访问客户端应用程序日志。
- 仅当工作区位于同一区域且目标工作区未配置 IP ACL 或前端 PrivateLink 时,才允许跨工作区访问。
- 不支持全局临时视图。 Databricks 建议使用 会话临时视图 或创建需要跨会话数据传递的表。
流式处理限制
- 不支持默认的或基于时间的触发器间隔。 仅支持
Trigger.AvailableNow
。 请参阅配置结构化流式处理触发器间隔。 - 标准访问模式的所有流媒体限制也适用。 请参阅 Unity Catalog 标准访问模式的流式处理限制和要求。
机器学习限制
- 不支持用于机器学习的 Databricks Runtime 和 Apache Spark MLlib。
- 不支持 GPU。
笔记本限制
- 笔记本范围的库不会跨开发会话进行缓存。
- 在用户之间共享笔记本时,不支持共享 TEMP 表和视图。
- 不支持对笔记本中的数据帧使用自动完成和变量资源管理器。
工作流限制
- 作业无服务器计算的驱动程序大小当前是固定的,无法更改。
- 不会为每个任务运行隔离任务日志。 日志将包含多个任务的输出。
- 笔记本任务不支持任务库。 请改用笔记本范围的库。 请参阅作用域为笔记本的 Python 库。
特定于计算的限制
不支持以下特定于计算的功能:
- 计算策略
- 计算范围的 init 脚本
- 计算范围的库,包括自定义数据源和 Spark 扩展。 请改用笔记本范围的库。
- 实例池
- 计算事件日志
- 大多数 Apache Spark 计算配置。 有关受支持的配置列表,请参阅 为无服务器笔记本和作业配置 Spark 属性。
- 环境变量。 相反,Databricks 建议使用 小组件 来创建 作业和任务参数。
缓存限制
无服务器计算不支持数据帧和 SQL 缓存 API。 使用其中的任何 API 或 SQL 命令都会导致异常。
- df.cache()、df.persist()
- df.unpersist()
- spark.catalog.cacheTable()
- spark.catalog.uncacheTable()
- spark.catalog.clearCache()
- CACHE TABLE
- UNCACHE TABLE
- REFRESH TABLE
- CLEAR CACHE
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 子句 来参数化对象名称。