将现有资源迁移到捆绑包

生成资源包时,您可能需要包括那些已经存在且在远程工作区中已完全配置的 Databricks 资源。 可以使用 Databricks CLI bundle generate 命令在捆绑包中快速自动生成现有应用、仪表板、作业和管道的配置。 请参阅 databricks 捆绑包生成。 在 Databricks UI 中,可以获取某些资源(如作业和管道)的配置,此配置可以复制并手动粘贴到捆绑资源配置文件中。

为捆绑包中的资源生成配置并部署捆绑包后,使用命令将 bundle deployment bind 捆绑包中的资源绑定到工作区中的相应资源。 请参阅 databricks 包部署绑定

本页提供了使用 Databricks CLI 或 UI 生成或检索捆绑资源配置的简单示例。

有关捆绑包中的资源定义的详细信息,请参阅 Databricks 资产捆绑包资源

使用 Databricks CLI 生成现有作业或管道配置

若要以编程方式为现有作业或管道生成捆绑配置,请执行以下作:

  1. 从 UI 中作业或管道的 作业详细信息管道详细信息 端面板中检索现有作业或管道的 ID。 或者,使用 Databricks CLI databricks jobs listdatabricks pipelines list-pipelines 命令。

  2. 运行bundle generate job 或执行bundle generate pipelineDatabricks 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 表示形式:

  1. 在 Azure Databricks 工作区的边栏中,单击作业和管道

  2. (可选)选择作业归我所有筛选器。

  3. 单击作业的名称链接。

  4. 在“ 立即运行 ”按钮旁边,单击烤肉串,然后单击“ 编辑为 YAML”。

  5. 复制 YAML 并将其添加到捆绑包的 databricks.yml 文件中,或者在捆绑项目的 resources 目录中为您的作业创建一个配置文件,并在 databricks.yml 文件中引用它。 查看资源

  6. 下载并将现有作业中引用的所有 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 表示形式:

  1. 在 Azure Databricks 工作区的边栏中,单击作业和管道

  2. (可选)选择 “管道” 筛选器。

  3. 单击管道的名称

  4. “开发 ”按钮旁边,单击 “Kebab”菜单图标。然后单击“ 查看设置 YAML”。

  5. 单击复制图标,将 管道设置 YAML 对话框的管道定义 YAML 复制到本地剪贴板。

  6. 将复制的 YAML 添加到您捆绑项目的 databricks.yml 文件中,或者在捆绑项目的 resources 文件夹中为流程创建一个配置文件,并在您的 databricks.yml 文件中引用它。 查看资源

  7. 下载并添加引用捆绑包项目源的任何 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 generatedatabricks bundle deployment bind 一起使用:

  1. 在捆绑包 databricks.yml中定义开发和生产目标。

  2. 为开发目标中的资源(在此示例中为作业)生成捆绑配置:

    databricks bundle generate job --existing-job-id <dev_job_id> --target dev
    
  3. prod 中资源的配置可能与开发中的资源配置不同,因此,现在已为资源生成配置,请在捆绑包中定义资源(在生产目标中)的生产特定设置。

    targets:
      dev:
        default: true
        #...
      prod:
        #...
        resources:
          jobs:
            my_job:
              # Job prod settings
    
  4. 将捆绑包中的资源绑定到开发和生产目标中的现有作业:

    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