共用方式為


Databricks 資產組合資源

Databricks 資產套件組合可讓您指定套件組合在套件組合組態中 resources 對應中使用的 Azure Databricks 資源相關信息。 請參閱 資源映射資源鍵參考

本文概述套件組合的支持資源類型,並提供每個支援類型的詳細數據和範例。 如需其他範例,請參閱 套件組合組態範例

提示

若要產生任何現有資源的 YAML,請使用 databricks bundle generate 命令。 請參閱 產生套件組合元件檔

支援的資源

下表列出套件組合支援的資源類型。 某些資源可以藉由在套件組合中定義並部署套件組合來建立,而某些資源僅支持參考現有資源以包含在套件組合中。

資源是使用對應的 Databricks REST API 來定義資源, 物件的建立作業要求承載,其中物件支援的欄位,以 YAML 表示,是資源的支持屬性。 每個資源對應承載的文件連結都會列在表格中。

提示

如果套件組合組態檔中找到未知的資源屬性,則 databricks bundle validate 命令會傳回警告。

資源 建立支援 對應的 REST API 物件
應用程式 應用程式物件
叢集 叢集物件
儀錶板 儀表板物件
實驗 實驗對象
作業 Job 物件
模型 (舊版) Model(舊版)物件
模型服務端點 模型服務端點物件
管線 [Pipeline 物件](https://docs.databricks.com/api/azure/workspace/pipelines/create
quality_monitor 品質監控物件
registered_model (Unity 目錄) 已註冊的模型物件
架構 (Unity 目錄) Schema 物件
磁碟區 (Unity 目錄) 體積物件

應用程式

應用程式資源定義了 Databricks 應用程式。 如需 Databricks Apps 的相關信息,請參閱 什麼是 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 存放庫

叢集

叢集資源定義了 通用叢集

下列範例會建立名為 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"

儀表板

儀表板資源讓您可以集成管理 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 來修改儀錶板,除非您使用 bundle generate明確更新它,否則透過 UI 所做的修改不會套用至本機套件組合中的儀錶板 JSON 檔案。 您可以使用 [--watch] 選項持續輪詢和擷取儀錶板的變更。 請參閱 產生套件組合元件檔

此外,如果您嘗試部署套件組合,其中包含與遠端工作區中不同的儀錶板 JSON 檔案,則會發生錯誤。 若要使用本機工作區強制部署和覆寫遠端工作區中的儀錶板,請使用 [--force] 選項。 請參閱 部署套件

實驗

實驗資源可讓您在套件組合中定義 MLflow 實驗。 如需 MLflow 實驗的相關信息,請參閱 使用 MLflow 實驗組織訓練回合

下列範例會定義所有使用者都可以檢視的實驗:

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

工作

作業資源可讓您在套件組合中定義 作業及其對應的工作。 如需關於 Databricks 上工作的信息,請參閱編排概覽 。 如需使用 Databricks 資產組合範本建立作業的教學課程,請參閱 使用 Databricks Asset Bundles在 Azure Databricks 上開發作業。

下列範例會定義一個使用資源索引鍵 hello-job 並包含一個筆記本任務的作業:

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

如需定義作業工作和覆寫作業設定的相關信息,請參閱 將工作新增至 Databricks Asset Bundles中的作業、覆寫 Databricks Asset Bundles中的作業工作設定,以及 在 Databricks Asset Bundles中覆寫叢集設定。

模型(舊版)

模型資源可讓您在組合中定義 舊版模型。 Databricks 建議您改用 Unity Catalog 中註冊的模型

model_serving_endpoint

model_serving_endpoint 資源允許您定義模型服務端點 。 請參閱 管理服務端點的模型

下列範例會定義提供端點的 Unity 目錄模型:

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 目錄)

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 目錄)

已註冊的模型資源可讓您在 Unity 目錄中定義模型。 如需 Unity 目錄 註冊模型的相關信息,請參閱 在 Unity 目錄中管理模型生命週期。

下列範例會在 Unity 目錄中定義已註冊的模型:

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

管道

管線資源可讓您 管線建立 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

架構 (Unity 目錄)

架構資源類型可讓您定義 Unity 目錄 架構, 建立為套件組合一部分的工作流程和管線中的數據表和其他資產。 架構與其他資源類型不同,具有下列限制:

  • 架構資源的擁有者一律是部署使用者,而且無法變更。 如果在套件組合中指定 run_as,架構上的操作將會忽略它。
  • 只有對應 Schemas 物件建立 API 支援的欄位可供架構資源使用。 例如,不支援 enable_predictive_optimization,因為它僅適用於 更新 API

例子

下列範例會定義具有資源密鑰的管線 my_pipeline,此管線會使用索引鍵 my_schema 作為目標來建立 Unity 目錄架構:

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 Asset Bundles 不支援頂層授權對應,因此如果您想要設定架構的授權,請在 schemas 對應中定義架構的授權。 如需有關權限授與的更多資訊,請參閱 顯示、授與和撤銷許可權

下列範例透過授權來定義 Unity Catalog 資料庫結構:

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

磁碟區 (Unity 目錄)

磁碟區資源類型可讓您定義和建立 Unity 目錄 磁碟區, 作為套件組合的一部分。 部署有定義磁碟區的套件組合時,請注意:

  • 除非磁碟區已存在於工作區,否則無法在套件組合的 artifact_path 中參考該磁碟區。 因此,如果您想要使用 Databricks 資產組合來建立磁碟區,您必須先定義套件組合中的磁碟區、部署磁碟區以建立磁碟區,然後在後續部署的 artifact_path 中參考磁碟區。
  • 部署目標配置為 dev_${workspace.current_user.short_name} 時,套件中的卷不會帶有 mode: development 前綴。 不過,您可以手動設定此字首。 請參閱 自訂預設值

下列範例會建立具有索引鍵 my_volume的 Unity 目錄磁碟區:

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

如需執行將資料寫入 Unity Catalog 卷中檔案之作業的範例套件組合,請參閱 套件組合範例 GitHub 存放庫