使用工作流的无服务器计算运行 Azure Databricks 作业

重要

工作流的无服务器计算为公共预览版。 有关资格和启用的信息,请参阅启用无服务器计算公共预览版

重要

由于工作流的无服务器计算的公共预览版不支持控制出口流量,因此作业对 Internet 具有完全访问权限。

工作流的无服务器计算允许在不配置和部署基础结构的情况下运行 Azure Databricks 作业。 借助无服务器计算,可以专注于实现数据处理和分析管道,Azure Databricks 可以有效地管理计算资源,包括优化和缩放工作负载的计算。 自动缩放和 Photon 会自动为运行作业的计算资源启用。

工作流的无服务器计算可自动选择适当的资源(例如实例类型、内存和处理引擎),基于工作负载对计算进行自动优化。 自动优化还会自动重试失败的作业。

Databricks 会自动升级 Databricks Runtime 版本,以支持平台的增强和升级,同时确保 Azure Databricks 作业的稳定性。 若要查看无服务器计算用于工作流的当前 Databricks Runtime 版本,请参阅无服务器计算发行说明

由于不需要群集创建权限,因此所有工作区用户都可以使用无服务器计算来运行其工作流。

本文介绍如何使用 Azure Databricks 作业 UI 创建和运行使用无服务器计算的作业。 还可以通过作业 API、Databricks 资产捆绑包和 Databricks SDK for Python 自动创建和运行使用无服务器计算的作业。

要求

  • Azure Databricks 工作区必须启用 Unity Catalog。
  • 由于工作流的无服务器计算使用共享访问模式,因此工作负载必须支持此访问模式。
  • Azure Databricks 工作区必须位于受支持的区域中。 请参阅 Azure Databricks 区域

使用无服务器计算创建作业

无服务器计算支持笔记本、Python 脚本、dbt 和 Python wheel 任务类型。 默认情况下,创建新作业并添加其中一个受支持的任务类型时,会选择无服务器计算作为计算类型。

创建无服务器任务

Databricks 建议对所有作业任务使用无服务器计算。 还可以为作业中的任务指定不同的计算类型,如果工作流的无服务器计算不支持任务类型,则可能需要这些类型。

配置现有作业使用无服务器计算

编辑作业时,可以将现有作业切换为对受支持的任务类型使用无服务器计算。 若要切换到无服务器计算,请执行以下任一操作:

  • “作业详细信息”侧面板中,单击“计算”下的“交换”,单击“新建”,输入或更新任何设置,然后单击“更新”
  • “计算”下拉菜单中单击 向下箭头图标,然后选择“无服务器”

将任务切换到无服务器计算

使用无服务器计算计划笔记本

除了使用作业 UI 创建和计划使用无服务器计算的作业之外,还可以直接从 Databricks 笔记本创建和运行使用无服务器计算的作业。 请参阅创建和管理计划的笔记本作业

设置 Spark 配置参数

若要在无服务器计算中自动配置 Spark,Databricks 仅允许设置特定的 Spark 配置参数。 有关允许的参数的列表,请参阅支持的 Spark 配置参数

只能在会话级别设置 Spark 配置参数。 为此,请在笔记本中设置它们,并将笔记本添加到使用这些参数的同一作业中包含的某个任务中。 请参阅获取和设置笔记本中的 Apache Spark 配置属性

配置笔记本环境和依赖项

为笔记本任务管理库依赖项和环境配置时,请在笔记本的一个单元格中添加相应配置。 以下示例使用工作区文件中的 pip install 以及 requirements.txt 文件安装 Python 库,并设置 spark.sql.session.timeZone 会话变量:

%pip install -r ./requirements.txt
%pip install simplejson
%pip install /Volumes/my/python.whl
%pip install /Workspace/my/python.whl
%pip install https://some-distro.net/popular.whl
spark.conf.set('spark.sql.session.timeZone', 'Europe/Amsterdam')

若要跨多个笔记本设置相同的环境,可以使用单个笔记本来配置环境,然后使用 %run magic 命令从需要环境配置的任何笔记本运行该笔记本。 请参阅使用 %run 导入笔记本

为非笔记本任务配置环境和依赖项

对于其他受支持的任务类型(如 Python 脚本、Python wheel 或 dbt 任务),默认环境包括已安装的 Python 库。 若要查看已安装的库列表,请参阅基于你为工作流部署选择的无服务器计算的 Databricks Runtime 版本发行说明中的“已安装的 Python 库”部分。 若要查看无服务器计算用于工作流的当前 Databricks Runtime 版本,请参阅无服务器计算发行说明。 如果任务需要未安装的库,还可以安装 Python 库。 可以从工作区文件、Unity Catalog 或公共包存储库安装 Python 库。 创建或编辑任务时添加库:

  1. “环境和库”下拉菜单中,单击“默认”环境旁边的 编辑图标,或单击“+添加新环境”

    编辑默认环境

  2. “配置环境”对话框中,单击“+添加库”

  3. “库”下的下拉菜单中选择依赖项的类型。

  4. “文件路径”文本框中,输入库的路径。

  • 对于工作区文件中的 Python Wheel,路径应该是绝对路径,以 /Workspace/ 开头。

  • 对于 Unity 目录卷中的 Python Wheel,路径应为 /Volumes/<catalog>/<schema>/<volume>/<path>.whl

  • 对于 requirements.txt 文件,请选择 PyPi 并输入 -r /path/to/requirements.txt

    添加任务库

  1. 单击“确认”“+添加库”以添加其他库。
  2. 如要添加任务,请单击“创建任务”。 如要编辑任务,请单击“保存任务”

配置无服务器计算自动优化以禁止重试

工作流的无服务器计算自动优化功能会自动优化用于运行作业和重试失败作业的计算。 自动优化默认启用,Databricks 建议将其启用,以确保关键工作负载至少成功运行一次。 但是,如果工作负载必须最多执行一次,例如,不是幂等的作业,则可以在添加或编辑任务时关闭自动优化:

  1. “重试”旁边,单击“添加”(或者,如果重试策略已存在,则单击 编辑图标)。
  2. “重试策略”对话框中,取消选中“启用无服务器自动优化(可能包括其他重试)”
  3. 单击“确认”。
  4. 如要添加任务,请单击“创建任务”。 如要编辑任务,请单击“保存任务”

监视将无服务器计算用于工作流的作业成本

可以通过查询可计费使用系统表来监控使用无服务器计算的工作流作业的成本。 此表已更新,包括有关无服务器成本的用户和工作负载属性。 请参阅计费使用情况系统表引用

查看 Spark 查询的详细信息

工作流的无服务器计算具有用于查看 Spark 语句的详细运行时信息(例如指标和查询计划)的新界面。 若要查看无服务器计算上运行的作业中包含的 Spark 语句的查询见解,请执行以下操作:

  1. 单击边栏中的 工作流图标“工作流”。
  2. 在“名称”列中,单击要查看其见解的作业名称
  3. 单击要查看其见解的特定运行。
  4. 在“任务运行”侧面板的“计算”部分,单击“查询历史记录”
  5. 你将重定向到“查询历史记录”,其中的信息已根据你所处任务的任务运行 ID 进行预筛选。

有关使用查询历史记录的信息,请参阅查询历史记录

限制

有关工作流限制的无服务器计算列表,请参阅无服务器计算发行说明中的无服务器计算限制