Databricks 资产捆绑包部署模式
本文介绍 Databricks 资产捆绑包部署模式的语法。 捆绑包支持以编程方式管理 Azure Databricks 工作流。 请参阅什么是 Databricks 资产捆绑包?
在 CI/CD 工作流中,开发人员通常在不同的阶段或 模式中编写代码、测试、部署和运行解决方案。 例如,最简单的模式集包括用于预生产验证的开发模式,然后是用于已验证可交付结果的生产模式。 Databricks 资产捆绑包提供一套可选的默认行为,对应各模式。 若要对特定目标使用这些行为,请在 targets
配置映射中为目标设置 mode
或配置 presets
。 有关 targets
的信息,请参阅捆绑配置目标映射。
开发模式
若要在开发模式下部署捆绑包,必须先将 mode
映射(设置为 development
)添加到预期目标。 例如,此名为 dev
的目标被视为开发目标:
targets:
dev:
mode: development
通过运行 databricks bundle deploy -t <target-name>
命令在开发模式下部署目标可实现以下行为,可以使用预设自定义这些行为:
- 在未部署为文件或笔记本的所有资源前添加前缀
[dev ${workspace.current_user.short_name}]
,并使用dev
Azure Databricks 标记给每个已部署的作业和管道打上标记。 - 将所有相关的已部署增量实时表管道标记为
development: true
。 请参阅使用开发模式运行管道更新。 - 允许在对
bundle deploy
命令的相关调用中使用--compute-id <cluster-id>
,这将替代相关捆绑包配置文件中已指定的所有现有群集定义。 可以在此处将compute_id
映射(或作为bundle
映射的子映射)设置为要使用的群集 ID,而不是在对bundle deploy
命令的相关调用中使用--compute-id <cluster-id>
。 - 在部署的资源(如作业或质量监视器)上暂停所有计划和触发器。 通过将
schedule.pause_status
设置为UNPAUSED
来取消暂停单个作业的计划和触发器。 - 对所有已部署的作业启用并发运行,以加快迭代速度。 通过将
max_concurrent_runs
设置为1
来禁用单个作业的并发运行。 - 禁用部署锁以加快迭代速度。 此锁可防止在开发模式下不太可能发生的部署冲突。 通过将
bundle.deployment.lock.enabled
设置为true
来重新启用锁。
生产模式
若要在生产模式下部署捆绑包,必须先将 mode
映射(设置为 production
)添加到预期目标。 例如,此名为 prod
的目标被视为生产目标:
targets:
prod:
mode: production
通过运行 databricks bundle deploy -t <target-name>
命令在生产模式下部署目标可实现以下行为:
验证所有已部署的相关增量实时表管道都标记为
development: false
。验证当前 Git 分支等于目标中指定的 Git 分支。 可以选择在目标中指定 Git 分支,这一操作可以通过其他
git
属性来完成,如下所示:git: branch: main
在部署时指定
--force
可以重写此验证。Databricks 建议使用服务主体进行生产部署。 可以通过将
run_as
设置为服务主体来强制执行此操作。 请参阅管理服务主体和指定 Databricks 资产捆绑包工作流的运行标识。 如果不使用服务主体,请注意以下额外行为:- 验证
artifact_path
、file_path
、root_path
或state_path
映射未重写给特定用户。 - 验证已指定
run_as
和permissions
映射,以明确具有特定部署权限的身份。
- 验证
与前面将
mode
映射设置为development
的行为不同,如果将mode
映射设置为production
,则无法通过某种方式(例如使用--compute-id <cluster-id>
选项或compute_id
映射)替代相关捆绑包配置文件中指定的任何现有群集定义。
自定义预设
Databricks 资产捆绑包支持目标的可配置预设,以便自定义目标的行为。 下表列出了可用的预设:
预设 | 说明 |
---|---|
name_prefix |
要追加到资源名称的前缀字符串。 |
pipelines_development |
管道是否处于开发模式。 有效值为 true or false 进行求值的基于 SQL 语言的筛选器表达式。 |
trigger_pause_status |
要应用于所有触发器和计划的暂停状态。 有效值为 PAUSED or UNPAUSED 进行求值的基于 SQL 语言的筛选器表达式。 |
jobs_max_concurrent_runs |
作业允许的最大并发运行数。 |
tags |
一组键:值标记,这些标记适用于支持标记的所有资源,其中包括作业和试验。 Databricks 资产捆绑包不支持 schema 资源的标记。 |
注意
如果 mode
和 presets
均已设置,预设将替代默认模式行为,并且各个资源的设置将替代预设。 例如,如果计划设置为 UNPAUSED
,但 trigger_pause_status
预设设置为 PAUSED
,计划将取消暂停。
以下示例显示名为 dev
的目标的自定义预设配置:
targets:
dev:
presets:
name_prefix: "testing_" # prefix all resource names with testing_
pipelines_development: true # set development to true for pipelines
trigger_pause_status: PAUSED # set pause_status to PAUSED for all triggers and schedules
jobs_max_concurrent_runs: 10 # set max_concurrent runs to 10 for all jobs
tags:
department: finance