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 存放庫。