Freigeben über


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_jobverwendet 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-pipelinedefiniert:

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 in artifact_path darauf verweisen.
  • Wenn für das Bereitstellungsziel dev_${workspace.current_user.short_name} konfiguriert ist, wird Volumes im Bundle nicht das Präfix mode: 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_volumeerstellt:

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“.