无服务器计算限制
本文介绍了笔记本和作业的无服务器计算的当前限制。 它首先概述了最重要的注意事项,然后提供一个全面的限制参考列表。
限制概述
在新建工作负荷或将工作负荷迁移到无服务器计算之前,请先考虑以下限制:
- Python 和 SQL 是唯一受支持的语言。
- 仅支持 Spark 连接 API。 不支持 Spark RDD API。
- 不支持 JAR 库。 有关解决方法,请参阅无服务器计算的最佳做法。
- 无服务器计算对所有工作区用户具有无限制的访问权限。
- 不支持笔记本标记。
- 对于流式处理,只能使用增量批处理逻辑。 不支持默认的或基于时间的触发器间隔。 请参阅流式处理限制。
限制参考列表
以下部分列出了无服务器计算的当前限制。
无服务器计算基于共享计算体系结构。 下面列出了从共享计算继承的最相关限制,以及其他特定于无服务器的限制。 有关共享计算限制的完整列表,请参阅 Unity Catalog 的计算访问模式限制。
一般限制
不支持 Scala 和 R。
编写 SQL 时,ANSI SQL 是默认值。 将
spark.sql.ansi.enabled
设置为false
以选择退出 ANSI 模式。不支持 Spark RDD API。
不支持 Spark 上下文 (sc)、
spark.sparkContext
和sqlContext
。不支持 Databricks 容器服务。
不支持 Web 终端。
任何查询的运行时间都不能超过 48 小时。
必须使用 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 查询的信息。 请参阅查询配置文件。
仅当工作区位于同一区域且目标工作区未配置 IP ACL 或前端 PrivateLink 时,才允许跨工作区访问。
不支持全局临时视图。 Databricks 建议使用 会话临时视图 或创建需要跨会话数据传递的表。
流式处理限制
- 不支持默认的或基于时间的触发器间隔。 仅支持
Trigger.AvailableNow
。 请参阅配置结构化流式处理触发器间隔。 - 共享访问模式下对流式处理的所有限制也适用。 请参阅 Unity Catalog 共享访问模式的流式处理限制和要求。
机器学习限制
- 不支持用于机器学习的 Databricks Runtime 和 Apache Spark MLlib。
- 不支持 GPU。
笔记本限制
- 笔记本可以访问 8GB 内存,但内存量无法配置。
- 笔记本范围的库不会跨开发会话进行缓存。
- 在用户之间共享笔记本时,不支持共享 TEMP 表和视图。
- 不支持对笔记本中的数据帧使用自动完成和变量资源管理器。
工作流限制
- 作业无服务器计算的驱动程序大小当前是固定的,无法更改。
- 不会为每个任务运行隔离任务日志。 日志将包含多个任务的输出。
- 笔记本任务不支持任务库。 请改用笔记本范围的库。 请参阅作用域为笔记本的 Python 库。
特定于计算的限制
不支持以下特定于计算的功能:
- 计算策略
- 计算范围的 init 脚本
- 计算范围的库,包括自定义数据源和 Spark 扩展。 请改用笔记本范围的库。
- 计算级数据访问配置,包括实例配置文件。 因此,无法通过云路径上的 HMS 或使用没有嵌入凭据的 DBFS 装载来访问表和文件。
- 实例池
- 计算事件日志
- 大多数 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。
不支持使用
${var}
语法的 Hive 变量(例如${env:var}
、${configName}
、${system:var}
和spark.sql.variable
)或配置变量引用。 使用 Hive 变量会导致异常。请改用 DECLARE VARIABLE、SET VARIABLE 和 SQL 会话变量引用以及参数标记(“?”或“:var”)来声明、修改和引用会话状态。 在许多情况下,也可以使用 IDENTIFIER 子句来参数化对象名称。