无服务器计算限制

本文介绍了笔记本和作业的无服务器计算的当前限制。 它首先概述了最重要的注意事项,然后提供一个全面的限制参考列表。

限制概述

在新建工作负荷或将工作负荷迁移到无服务器计算之前,请先考虑以下限制:

  • 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.sparkContextsqlContext

  • 不支持 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 建议使用 会话临时视图 或创建需要跨会话数据传递的表。

流式处理限制

机器学习限制

笔记本限制

  • 笔记本可以访问 8GB 内存,但内存量无法配置。
  • 笔记本范围的库不会跨开发会话进行缓存。
  • 在用户之间共享笔记本时,不支持共享 TEMP 表和视图。
  • 不支持对笔记本中的数据帧使用自动完成和变量资源管理器

工作流限制

  • 作业无服务器计算的驱动程序大小当前是固定的,无法更改。
  • 不会为每个任务运行隔离任务日志。 日志将包含多个任务的输出。
  • 笔记本任务不支持任务库。 请改用笔记本范围的库。 请参阅作用域为笔记本的 Python 库

特定于计算的限制

不支持以下特定于计算的功能:

  • 计算策略
  • 计算范围的 init 脚本
  • 计算范围的库,包括自定义数据源和 Spark 扩展。 请改用笔记本范围的库
  • 计算级数据访问配置,包括实例配置文件。 因此,无法通过云路径上的 HMS 或使用没有嵌入凭据的 DBFS 装载来访问表和文件。
  • 实例池
  • 计算事件日志
  • 大多数 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。

  • 不支持使用 ${var} 语法的 Hive 变量(例如 ${env:var}${configName}${system:var}spark.sql.variable)或配置变量引用。 使用 Hive 变量会导致异常。

    请改用 DECLARE VARIABLESET VARIABLESQL 会话变量引用以及参数标记(“?”或“:var”)来声明、修改和引用会话状态。 在许多情况下,也可以使用 IDENTIFIER 子句来参数化对象名称。