Databricks Asset Bundles-Ressourcen
Mit Databricks-Ressourcenbundles können Sie Informationen zu den Azure Databricks-Ressourcen angeben, die vom Bundle in der resources
-Zuordnung in der Bundlekonfiguration verwendet werden. Weitere Informationen finden Sie unter Ressourcenzuordnung und Ressourcenschlüsselreferenz.
In diesem Artikel werden unterstützte Ressourcentypen für Bundles beschrieben und Details und ein Beispiel für jeden unterstützten Typ bereitgestellt. Weitere Beispiele finden Sie in Bundle-Konfigurationsbeispielen.
Tipp
Verwenden Sie den Befehl databricks bundle generate
, um YAML für jede vorhandene Ressource zu generieren. Siehe Generieren einer Bündelkonfigurationsdatei.
Unterstützte Ressourcen
In der folgenden Tabelle sind die unterstützten Ressourcentypen für Bundles aufgeführt. Einige Ressourcen können erstellt werden, indem sie in einem Bundle definiert und das Bundle bereitgestellt wird, und einige Ressourcen unterstützen nur das Verweisen auf eine vorhandene Ressource, die in das Bundle eingeschlossen werden soll.
Ressourcen werden mithilfe der entsprechenden Databricks-REST-API definiert. Die Nutzdaten für die Anforderung des Objekterstellungsvorgangs, bei dem die unterstützten Felder des Objekts als YAML ausgedrückt werden, sind die unterstützten Eigenschaften der Ressource. Links zur Dokumentation für die entsprechenden Nutzlasten der einzelnen Ressourcen werden in der Tabelle aufgeführt.
Tipp
Der Befehl databricks bundle validate
gibt Warnungen zurück, wenn unbekannte Ressourceneigenschaften in Paketkonfigurationsdateien gefunden werden.
Resource | Support erstellen | Entsprechendes REST-API-Objekt |
---|---|---|
app | ✓ | App-Objekt |
cluster | ✓ | Clusterobjekt- |
Dashboard | Dashboard-Objekt | |
experiment | ✓ | Experiment-Objekt |
Auftrag | ✓ | Auftragsobjekt |
Modell (Alt) | ✓ | (Legacy-)Modellobjekt |
model_serving_endpoint | ✓ | Objekt für Modellbereitstellungsendpunkt |
Pipeline | ✓ | [Pipelineobjekt]](https://docs.databricks.com/api/azure/workspace/pipelines/create) |
quality_monitor | ✓ | Objekt zur Qualitätsüberwachung |
registered_model (Unity Catalog) | ✓ | Registriertes Modellobjekt |
Schema (Unity Catalog) | ✓ | Schemaobjekt |
Volume (Unity Catalog) | ✓ | Volumeobjekt |
app
Die App-Ressource definiert eine Databricks-App. Informationen zu Databricks Apps finden Sie unter Was ist Databricks Apps?.
Tipp
Sie können ein Bündel mit einer Streamlit Databricks-App mit dem folgenden Befehl initialisieren:
databricks bundle init https://github.com/databricks/bundle-examples --template-dir contrib/templates/streamlit-app
Um eine App hinzuzufügen, geben Sie die Objektfelder an, die die App definieren, sowie Folgendes:
source_code_path
– Der lokale Pfad./app
des Datenquellencodes der Databricks-App. Dies ist ein Pflichtfeld.config
– Die App-Konfigurationsbefehle und Umgebungsvariablen. Sie können dies verwenden, um unterschiedliche Ziele für die App-Bereitstellung anzugeben.
Beispiel
Im folgenden Beispiel wird eine App namens my_app
erstellt, die einen vom Bundle erstellten Auftrag verwaltet:
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"
Das vollständige Databricks-App-Beispielbundle finden Sie im GitHub-Repository „bundle-examples“.
Cluster
Die Clusterressource definiert einen universellen Cluster.
Beispiel
Im folgenden Beispiel wird ein Cluster mit dem Namen my_cluster
erstellt und als Cluster festgelegt, der zum Ausführen des Notizbuchs in my_job
verwendet werden soll:
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
Mit der Dashboardressource können Sie AI/BI-Dashboards in einem Bündel verwalten. Informationen zu AI/BI-Dashboards finden Sie unter Dashboards.
Beispiel
Im folgenden Beispiel wird das Dashboard NYC Taxi Trip Analysis im Databricks-Arbeitsbereich bereitgestellt.
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}
Wenn Sie die Benutzeroberfläche zum Ändern des Dashboards verwenden, werden Änderungen, die über die Benutzeroberfläche vorgenommen werden, nicht auf die DASHBOARD-JSON-Datei im lokalen Bundle angewendet, es sei denn, Sie aktualisieren es explizit mithilfe von bundle generate
. Sie können die Option --watch
verwenden, um Änderungen am Dashboard kontinuierlich abzufragen und abzurufen. Siehe Generieren einer Bündelkonfigurationsdatei.
Wenn Sie außerdem versuchen, ein Bundle bereitzustellen, das eine DASHBOARD-JSON-Datei enthält, die sich von der im Remotearbeitsbereich unterscheidet, tritt ein Fehler auf. Um die Bereitstellung zu erzwingen und das Dashboard im Remotearbeitsbereich mit dem lokalen zu überschreiben, verwenden Sie die Option --force
. Weitere Informationen finden Sie unter Bereitstellen eines Bundles.
Experiment
Mit der Experimentressource können Sie MLflow-Experimente in einem Bündel definieren. Informationen zu MLflow-Experimenten finden Sie unter Organisieren von Trainingsläufen mit MLflow-Experimenten.
Beispiel
Im folgenden Beispiel wird ein Experiment definiert, das alle Benutzer anzeigen können:
resources:
experiments:
experiment:
name: my_ml_experiment
permissions:
- level: CAN_READ
group_name: users
description: MLflow experiment used to track runs
Auftrag
Mit der Auftragsressource können Sie Aufträge und die entsprechenden Tasks in Ihrem Bundle definieren. Informationen zu Aufträgen finden Sie unter Übersicht über die Orchestrierung von Databricks. Ein Lernprogramm, das eine Vorlage "Databricks Asset Bundles" zum Erstellen eines Auftrags verwendet, finden Sie unter Entwickeln eines Auftrags für Azure Databricks mithilfe von Databricks Asset Bundles.
Beispiel
Im folgenden Beispiel wird ein Job mit dem Ressourcenschlüssel hello-job
mit einer Notebook-Aufgabe definiert.
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
notebook_task:
notebook_path: ./hello.py
Informationen zum Definieren von Auftragsaufgaben und Überschreiben von Auftragseinstellungen finden Sie unter Hinzufügen von Aufgaben zu Aufträgen in Databricks Asset Bundles, Überschreiben von Auftragsaufgabeneinstellungen in Databricks Asset Bundlesund Überschreiben von Clustereinstellungen in Databricks Asset Bundles.
Modell (Legacy)
Mit der Modellressource können Sie Legacymodelle in Bündeln definieren. Databricks empfiehlt, stattdessen die in Unity-Katalog registrierten Modelle zu verwenden.
model_serving_endpoint
Mit der model_serving_endpoint-Ressource können Sie Modell definieren, das Endpunktebedient. Weitere Informationen finden Sie unter Verwalten von Modellbereitstellungsendpunkten.
Beispiel
Im folgenden Beispiel wird ein Unity-Katalogmodell definiert, das Endpunkte bedient:
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)
Mit der quality_monitor-Ressource können Sie einen Unity Catalog-Tabellenmonitor definieren. Informationen zu Monitoren finden Sie unter Überwachen der Modellqualität und des Endpunktstatus.
Beispiel
Im folgenden Beispiel wird ein Qualitätsmonitor definiert:
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
registriertes_Modell (Unity-Katalog)
Mit der registrierten Modellressource können Sie Modelle im Unity-Katalog definieren. Informationen zu den im Unity-Katalog registrierten Modellenfinden Sie unter Verwalten des Modelllebenszyklus im Unity-Katalog.
Beispiel
Im folgenden Beispiel wird ein registriertes Modell im Unity-Katalog definiert:
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
Mit der Pipelineressource können Sie Delta Live Tables-Pipelines erstellen. Informationen zu Pipelines finden Sie unter Was ist Delta Live Tables?. Ein Lernprogramm, das die Vorlage "Databricks Asset Bundles" zum Erstellen einer Pipeline verwendet, finden Sie unter Entwickeln von Delta Live Tables-Pipelines mit Databricks Asset Bundles.
Beispiel
Im folgenden Beispiel wird eine Pipeline mit dem Ressourcenschlüssel hello-pipeline
definiert:
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)
Mit dem Schemaressourcentyp können Sie Unity-Katalog Schemas für Tabellen und andere Ressourcen in Ihren Workflows und Pipelines definieren, die als Teil eines Bündels erstellt wurden. Ein Schema, das sich von anderen Ressourcentypen unterscheidet, weist die folgenden Einschränkungen auf:
- Der Besitzer einer Schemaressource ist immer der Bereitstellungsbenutzer und kann nicht geändert werden. Wenn
run_as
im Bundle angegeben ist, wird sie von Vorgängen im Schema ignoriert. - Für die Schemaressource sind nur Felder verfügbar, die vom entsprechenden Schemas-Objekt-Erstellungs-API unterstützt werden. Beispielsweise wird
enable_predictive_optimization
nicht unterstützt, da sie nur in der Update-APIverfügbar ist.
Beispiele
Im folgenden Beispiel wird eine Pipeline mit dem Ressourcenschlüssel my_pipeline
definiert, die ein Unity-Katalogschema mit dem Schlüssel my_schema
als Ziel erstellt:
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.
Eine Zuordnung von Zuschüssen auf oberster Ebene wird von Databricks Asset Bundles nicht unterstützt. Wenn Sie also Zuschüsse für ein Schema festlegen möchten, definieren Sie die Zuschüsse für das Schema innerhalb der schemas
-Zuordnung. Weitere Informationen zu grants-Elementen finden Sie unter Anzeigen, Zuweisen und Widerrufen von Berechtigungen.
Im folgenden Beispiel wird ein Unity-Katalogschema mit Zuschüssen definiert:
resources:
schemas:
my_schema:
name: test-schema
grants:
- principal: users
privileges:
- SELECT
- principal: my_team
privileges:
- CAN_MANAGE
catalog_name: main
Volumes (Unity Catalog)
Mit dem Ressourcentyp „Volume“ können Sie Unity Catalog-Volumes als Teil eines Bundles definieren und erstellen. Beachten Sie beim Bereitstellen eines Bundles mit einem definierten Volume Folgendes:
- Auf ein Volume kann im
artifact_path
für das Bundle nicht verwiesen werden, bis es im Arbeitsbereich vorhanden ist. Wenn Sie also Databricks-Ressourcenbundles verwenden möchten, um das Volume zu erstellen, müssen Sie zuerst das Volume im Bundle definieren, es zum Erstellen des Volumes bereitstellen und dann bei nachfolgenden Bereitstellungen inartifact_path
darauf verweisen. - Wenn für das Bereitstellungsziel
dev_${workspace.current_user.short_name}
konfiguriert ist, wird Volumes im Bundle nicht das Präfixmode: development
vorangestellt. Sie können dieses Präfix jedoch manuell konfigurieren. Weitere Informationen finden Sie unter Benutzerdefinierte Voreinstellungen.
Beispiel
Im folgenden Beispiel wird ein Unity-Katalogvolume mit dem Schlüssel my_volume
erstellt:
resources:
volumes:
my_volume:
catalog_name: main
name: my_volume
schema_name: my_schema
Ein Beispielbundle, das einen Auftrag ausführt, der in eine Datei im Unity Catalog-Volume schreibt, finden Sie im GitHub-Repository „bundle-examples“.