生成资源包时,您可能需要包括那些已经存在且在远程工作区中已完全配置的 Databricks 资源。 可以使用 Databricks CLI bundle generate
命令在捆绑包中快速自动生成现有应用、仪表板、作业和管道的配置。 请参阅 databricks 捆绑包生成。 在 Databricks UI 中,可以获取某些资源(如作业和管道)的配置,此配置可以复制并手动粘贴到捆绑资源配置文件中。
为捆绑包中的资源生成配置并部署捆绑包后,使用命令将 bundle deployment bind
捆绑包中的资源绑定到工作区中的相应资源。 请参阅 databricks 包部署绑定。
本页提供了使用 Databricks CLI 或 UI 生成或检索捆绑资源配置的简单示例。
有关捆绑包中的资源定义的详细信息,请参阅 Databricks 资产捆绑包资源。
使用 Databricks CLI 生成现有作业或管道配置
若要以编程方式为现有作业或管道生成捆绑配置,请执行以下作:
从 UI 中作业或管道的 作业详细信息 或 管道详细信息 端面板中检索现有作业或管道的 ID。 或者,使用 Databricks CLI
databricks jobs list
或databricks pipelines list-pipelines
命令。运行
bundle generate job
或执行bundle generate pipeline
Databricks CLI 命令,并设置作业或管道 ID:databricks bundle generate job --existing-job-id 6565621249
databricks bundle generate pipeline --existing-pipeline-id 6565621249
此命令为捆绑包文件夹中
resources
的资源创建捆绑配置文件,并将任何引用的项目下载到该src
文件夹中。
还可以为现有仪表板生成配置。 请参阅 databricks 包生成仪表板。
使用 UI 检索现有作业定义
若要从 Azure Databricks 工作区 UI 检索现有作业定义的 YAML 表示形式:
在 Azure Databricks 工作区的边栏中,单击作业和管道。
(可选)选择作业和归我所有筛选器。
单击作业的名称链接。
在“ 立即运行 ”按钮旁边,单击烤肉串,然后单击“ 编辑为 YAML”。
复制 YAML 并将其添加到捆绑包的
databricks.yml
文件中,或者在捆绑项目的resources
目录中为您的作业创建一个配置文件,并在databricks.yml
文件中引用它。 查看资源。下载并将现有作业中引用的所有 Python 文件和笔记本添加到捆绑包的项目源代码中。 通常捆绑项目位于
src
捆绑包中的目录中。小窍门
可以通过单击 Azure Databricks 笔记本用户界面中的
.ipynb
,将现有笔记本从 Azure Databricks 工作区导出为 > 格式。将笔记本、Python 文件和其他项目添加到捆绑包后,请将对作业定义中的这些文件的引用更改为其本地位置。 例如,如果你在捆绑包的
hello_job.job.yml
文件夹中有一个resources
配置文件,并且将一个名为hello.ipynb
的笔记本下载到捆绑包的src
文件夹,那么文件hello_job.job.yml
的内容如下:resources: jobs: hello_job: name: hello_job tasks: - task_key: hello_task notebook_task: notebook_path: ../src/hello.ipynb
有关在 UI 中以代码的形式查看作业的详细信息,请参阅 “以代码的形式查看作业”。
使用 UI 检索现有管道定义
若要从 Azure Databricks 工作区 UI 检索现有管道定义的 YAML 表示形式:
在 Azure Databricks 工作区的边栏中,单击作业和管道。
(可选)选择 “管道” 筛选器。
单击管道的名称。
在 “开发 ”按钮旁边,单击
然后单击“ 查看设置 YAML”。
单击复制图标,将 管道设置 YAML 对话框的管道定义 YAML 复制到本地剪贴板。
将复制的 YAML 添加到您捆绑项目的
databricks.yml
文件中,或者在捆绑项目的resources
文件夹中为流程创建一个配置文件,并在您的databricks.yml
文件中引用它。 查看资源。下载并添加引用捆绑包项目源的任何 Python 文件和笔记本。 通常捆绑项目位于
src
捆绑包中的目录中。小窍门
可以通过单击 Azure Databricks 笔记本用户界面中的
.ipynb
,将现有笔记本从 Azure Databricks 工作区导出为 > 格式。将笔记本、Python 文件和其他制品添加到捆绑包后,请确保流水线定义正确引用它们。 例如,对于位于捆绑包的
hello.ipynb
目录中名为src/
的笔记本:resources: pipelines: hello_pipeline: name: hello_pipeline libraries: - notebook: path: ../src/hello.ipynb
将资源绑定到其远端对应方
通常,将资源添加到捆绑包后,需要确保捆绑包中的资源以及工作区中的现有资源保持同步。使用 bundle deployment bind
此命令可以链接它们。 如果绑定一个资源,则会在下一 bundle deploy
次根据捆绑包中定义的配置更新工作区内关联的 Azure Databricks 资源。
有关 bundle deployment bind
的更多信息和资源支持的详细信息,请参阅 databricks 捆绑部署绑定。
以下命令将资源 hello_job
绑定到工作区中的远程对应资源。 它会提示进行确认,以确保在下次部署捆绑包时应将捆绑包中的作业配置更新应用到相应的远程作业。
databricks bundle deployment bind hello_job 6565621249
若要删除捆绑资源与其工作区中的对应资源之间的链接,请使用 bundle deployment unbind
。 请参阅 databricks 包部署解除绑定。
databricks bundle deployment unbind hello_job
迁移存在于两个工作区中的资源
在某些设置中,同一资源可能存在于多个工作区中。 例如,同一作业可能位于开发和生产工作区中。 如果将现有作业添加到捆绑包,然后将捆绑包部署到其中一个工作区,则会创建重复的作业。 若要防止出现这种情况,请使用 databricks bundle generate
和 databricks bundle deployment bind
一起使用:
在捆绑包
databricks.yml
中定义开发和生产目标。为开发目标中的资源(在此示例中为作业)生成捆绑配置:
databricks bundle generate job --existing-job-id <dev_job_id> --target dev
prod 中资源的配置可能与开发中的资源配置不同,因此,现在已为资源生成配置,请在捆绑包中定义资源(在生产目标中)的生产特定设置。
targets: dev: default: true #... prod: #... resources: jobs: my_job: # Job prod settings
将捆绑包中的资源绑定到开发和生产目标中的现有作业:
databricks bundle deployment bind my_job <dev_job_id> --target dev
databricks bundle deployment bind my_job <prod_job_id> --target prod
现在可以将捆绑包部署到两个环境:
databricks bundle deploy --target dev
databricks bundle deploy --target prod