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 存储库。