Databricks 资产捆绑包资源

使用 Databricks 资产捆绑包,可以指定捆绑包在捆绑配置中的 resources 映射中使用的 Azure Databricks 资源的相关信息。 请参阅资源映射资源键参考

本文概述了捆绑包支持的资源类型,并为每个受支持的类型提供详细信息和示例。 有关其他示例,请参阅捆绑包配置示例

小贴士

若要为任何现有资源生成 YAML,请使用 databricks bundle generate 命令。 请参阅生成捆绑包配置文件

支持的资源

下表列出了捆绑包支持的资源类型。 可以通过在捆绑包中定义某些资源并部署捆绑包来创建这些资源,而某些资源仅支持引用要包含在捆绑包中的现有资源。

资源使用相应的 Databricks REST API 对象的创建操作请求有效负载进行定义,其中对象支持的字段(以 YAML 表示)是资源支持的属性。 表中列出了每个资源的相应有效负载的文档链接。

小贴士

如果在捆绑包配置文件中发现未知的资源属性,databricks bundle validate 命令将返回警告。

资源 创建支持 相应的 REST API 对象
app 应用对象
cluster 群集对象
dashboard 仪表板对象
experiment 试验对象
job 作业对象
model (legacy) 模型(旧版)对象
model_serving_endpoint 模型服务终结点对象
pipeline [管道对象]](https://docs.databricks.com/api/azure/workspace/pipelines/create)
quality_monitor 质量监视器对象
registered_model (Unity Catalog) 注册的模型对象
schema (Unity Catalog) 架构对象
volume (Unity Catalog) 卷对象

app

app 资源定义 Databricks 应用。 有关 Databricks 应用的信息,请参阅 什么是 Databricks Apps?

小贴士

可以使用以下命令通过 Streamlit Databricks 应用初始化捆绑包:

databricks bundle init https://github.com/databricks/bundle-examples --template-dir contrib/templates/streamlit-app

若要添加应用,请指定定义应用 对象字段,以及以下内容:

  • source_code_path - Databricks 应用源代码的 ./app 本地路径。 此字段是必填的。
  • config - 应用配置命令和环境变量。 可以使用此选项来指定不同的应用部署目标。

示例

以下示例创建一个名为 my_app 的应用,用于管理捆绑包创建的作业:

resources:
  jobs:
    # Define a job in the bundle
    hello_world:
      name: hello_world
      tasks:
        - task_key: task
          spark_python_task:
            python_file: ../src/main.py
          environment_key: default

      environments:
        - environment_key: default
          spec:
            client: "1"

  # Define an app that manages the job in the bundle
  apps:
    job_manager:
      name: "job_manager_app"
      description: "An app which manages a job created by this bundle"

      # The location of the source code for the app
      source_code_path: ../src/app

      # The configuration for running the app
      config:
        command:
          - flask
          - --app
          - app
          - run
          - --debug
        env:
          - name: JOB_ID
            value: ${resources.jobs.hello_world.id}

      # The resources in the bundle which this app has access to. This binds the resource in the app with the DABs resource.
      resources:
        - name: "app-job"
          job:
            id: ${resources.jobs.hello_world.id}
            permission: "CAN_MANAGE_RUN"

有关完整的 Databricks 应用示例捆绑包,请参阅 捆绑包示例 GitHub 存储库

cluster

cluster 资源定义通用群集

示例

以下示例将创建一个名为 my_cluster 的群集并将其设置为用于在 my_job 中运行笔记本的群集:

bundle:
  name: clusters

resources:
  clusters:
    my_cluster:
      num_workers: 2
      node_type_id: "i3.xlarge"
      autoscale:
        min_workers: 2
        max_workers: 7
      spark_version: "13.3.x-scala2.12"
      spark_conf:
        "spark.executor.memory": "2g"

  jobs:
    my_job:
      tasks:
        - task_key: test_task
          notebook_task:
            notebook_path: "./src/my_notebook.py"

dashboard

使用 dashboard 资源,可以在捆绑包中管理 AI/BI 仪表板。 有关 AI/BI 仪表板的信息,请参阅仪表板

示例

以下示例包括示例仪表板“NYC 出租车行程分析”并将其部署到 Databricks 工作区。

resources:
  dashboards:
    nyc_taxi_trip_analysis:
      display_name: "NYC Taxi Trip Analysis"
      file_path: ../src/nyc_taxi_trip_analysis.lvdash.json
      warehouse_id: ${var.warehouse_id}

如果使用 UI 修改仪表板,则通过 UI 进行的修改不会应用于本地捆绑包中的仪表板 JSON 文件,除非使用 bundle generate 显式更新它。 可以使用 --watch 选项持续轮询和检索仪表板的更改。 请参阅生成捆绑包配置文件

此外,如果尝试部署包含与远程工作区中不同的仪表板 JSON 文件的捆绑包,将发生错误。 若要使用本地工作区强制部署并覆盖远程工作区中的仪表板,请使用 --force 选项。 请参阅部署捆绑包

experiment

使用 experiment 资源,可以在捆绑包中定义 MLflow 试验。 有关 MLflow 试验的信息,请参阅使用 MLflow 试验组织训练运行

示例

以下示例定义了所有用户都可以查看的试验:

resources:
  experiments:
    experiment:
      name: my_ml_experiment
      permissions:
        - level: CAN_READ
          group_name: users
      description: MLflow experiment used to track runs

job

使用 job 资源,可以在捆绑包中定义作业及其相应的任务。 有关作业的信息,请参阅 Databricks 上的业务流程概述。 有关使用 Databricks 资产捆绑包模板创建作业的教程,请参阅使用 Databricks 资产捆绑包在 Azure Databricks 上开发作业

示例

以下示例使用一个笔记本任务定义具有资源键 hello-job 的作业:

resources:
  jobs:
    hello-job:
      name: hello-job
      tasks:
        - task_key: hello-task
          notebook_task:
            notebook_path: ./hello.py

有关定义作业任务和替代作业设置的信息,请参阅将任务添加到 Databricks 资产捆绑包中的作业替代 Databricks 资产捆绑包中的作业任务设置以及替代 Databricks 资产捆绑包中的群集设置

model(旧版)

使用 model 资源,可以在捆绑包中定义旧版模型。 Databricks 建议改用 Unity Catalog 注册的模型

model_serving_endpoint

model_serving_endpoint 资源允许定义模型服务终结点。 请参阅管理模型服务终结点

示例

以下示例定义了 Unity Catalog 模型服务终结点:

resources:
  model_serving_endpoints:
    uc_model_serving_endpoint:
      name: "uc-model-endpoint"
      config:
        served_entities:
        - entity_name: "myCatalog.mySchema.my-ads-model"
          entity_version: "10"
          workload_size: "Small"
          scale_to_zero_enabled: "true"
        traffic_config:
          routes:
          - served_model_name: "my-ads-model-10"
            traffic_percentage: "100"
      tags:
      - key: "team"
        value: "data science"

quality_monitor (Unity Catalog)

使用 quality_monitor 资源,可以定义 Unity Catalog 表监视器。 有关监视器的信息,请参阅 监视模型质量和终结点运行状况

示例

以下示例定义了质量监视器:

resources:
  quality_monitors:
    my_quality_monitor:
      table_name: dev.mlops_schema.predictions
      output_schema_name: ${bundle.target}.mlops_schema
      assets_dir: /Users/${workspace.current_user.userName}/databricks_lakehouse_monitoring
      inference_log:
        granularities: [1 day]
        model_id_col: model_id
        prediction_col: prediction
        label_col: price
        problem_type: PROBLEM_TYPE_REGRESSION
        timestamp_col: timestamp
      schedule:
        quartz_cron_expression: 0 0 8 * * ? # Run Every day at 8am
        timezone_id: UTC

registered_model (Unity Catalog)

使用 registered model 资源,可以在 Unity Catalog 中定义模型。 有关 Unity Catalog 注册的模型的信息,请参阅在 Unity Catalog 中管理模型生命周期

示例

以下示例在 Unity Catalog 中定义了注册的模型:

resources:
  registered_models:
      model:
        name: my_model
        catalog_name: ${bundle.target}
        schema_name: mlops_schema
        comment: Registered model in Unity Catalog for ${bundle.target} deployment target
        grants:
          - privileges:
              - EXECUTE
            principal: account users

pipeline

使用 pipeline 资源,可以创建 Delta Live Tables 管道。 有关管道的信息,请参阅什么是 Delta Live Tables?。 有关使用 Databricks 资产捆绑包模板创建管道的教程,请参阅使用 Databricks 资产捆绑包开发 Delta Live Tables 管道

示例

以下示例定义了一个具有资源键 hello-pipeline 的管道:

resources:
  pipelines:
    hello-pipeline:
      name: hello-pipeline
      clusters:
        - label: default
          num_workers: 1
      development: true
      continuous: false
      channel: CURRENT
      edition: CORE
      photon: false
      libraries:
        - notebook:
            path: ./pipeline.py

schema (Unity Catalog)

使用 schema 资源类型,可以为工作流和管道中作为捆绑包的一部分创建的表和其他资产定义 Unity Catalog 架构。 不同于其他资源类型,架构具有以下限制:

  • 构架资源的所有者始终是部署用户,不能更改。 如果在捆绑包中指定了 run_as,则架构上的操作将忽略它。
  • 只有相应的架构对象创建 API 支持的字段才可用于 schema 资源。 例如,不支持 enable_predictive_optimization,因为它仅在更新 API 上可用。

示例

以下示例定义了一个使用资源键 my_pipeline 的管道,该管道会创建一个以键 my_schema 为目标的 Unity Catalog 架构:

resources:
  pipelines:
    my_pipeline:
      name: test-pipeline-{{.unique_id}}
      libraries:
        - notebook:
            path: ./nb.sql
      development: true
      catalog: main
      target: ${resources.schemas.my_schema.id}

  schemas:
    my_schema:
      name: test-schema-{{.unique_id}}
      catalog_name: main
      comment: This schema was created by DABs.

Databricks 资产捆绑包不支持顶级授权映射,因此如果想为架构设置授权,请在 schemas 映射中定义架构的授权。 有关授权的详细信息,请参阅显示、授予和撤销权限

以下示例使用授予定义了 Unity Catalog 架构:

resources:
  schemas:
    my_schema:
      name: test-schema
      grants:
        - principal: users
          privileges:
            - SELECT
        - principal: my_team
          privileges:
            - CAN_MANAGE
      catalog_name: main

volume (Unity Catalog)

使用 volume 资源类型,可以将 Unity Catalog 作为捆绑包的一部分进行定义并创建。 在部署定义了卷的捆绑包时,请注意:

  • 在工作区中存在卷之后,才能在捆绑包的 artifact_path 中引用卷。 因此,如果要使用 Databricks 资产捆绑包创建卷,必须先在捆绑包中定义卷,对其进行部署以创建卷,然后在后续部署中在 artifact_path 中引用该卷。
  • 部署目标配置了 dev_${workspace.current_user.short_name} 后,捆绑包中的卷不会追加 mode: development 前缀。 但是,可以手动配置此前缀。 请参阅自定义预设

示例

以下示例创建了具有键 my_volume 的 Unity Catalog 卷:

resources:
  volumes:
    my_volume:
      catalog_name: main
      name: my_volume
      schema_name: my_schema

有关运行写入 Unity Catalog 卷中文件的作业的示例捆绑包,请参阅 bundle-examples GitHub 存储库