Delen via


Databricks Asset Bundles resources

Met Databricks Asset Bundles kunt u informatie opgeven over de Azure Databricks-resources die door de bundel worden gebruikt in de resources-koppeling in de bundelconfiguratie. Zie bronnen in kaart brengen en bronnen met een belangrijke verwijzing.

Dit artikel bevat een overzicht van ondersteunde resourcetypen voor bundels en bevat details en een voorbeeld voor elk ondersteund type. Zie Bundelconfiguratievoorbeeldenvoor meer voorbeelden.

Tip (only if context indicates that it refers to a suggestion or advice)

Als u YAML wilt genereren voor een bestaande resource, gebruikt u de opdracht databricks bundle generate. Zie Een bundelconfiguratiebestand genereren.

Ondersteunde bronnen

De volgende tabel bevat ondersteunde resourcetypen voor bundels. Sommige resources kunnen worden gemaakt door ze te definiëren in een bundel en de bundel te implementeren. Sommige resources ondersteunen alleen het verwijzen naar een bestaande resource die in de bundel moet worden opgenomen.

Resources worden gedefinieerd met behulp van de bijbehorende Databricks REST API nettolading voor het maken van bewerkingsaanvragen van het object, waarbij de ondersteunde velden van het object, uitgedrukt als YAML, de ondersteunde eigenschappen van de resource zijn. Koppelingen naar documentatie voor de bijbehorende gegevens van elke resource worden in de tabel vermeld.

Tip (only if context indicates that it refers to a suggestion or advice)

De databricks bundle validate opdracht retourneert waarschuwingen als onbekende resource-eigenschappen worden gevonden in bundelconfiguratiebestanden.

Hulpbron Ondersteuning maken Bijbehorend REST API-object
app App-object
cluster cluster-object
instrumentenpaneel Dashboard-object
experiment Experiment-object
taak taakobject
model (verouderd) Modelobject (verouderd)
model_serving_endpoint (modelbedieningsendpoint) model voor eindpuntobjecten
pijplijn [Pijplijnobject]](https://docs.databricks.com/api/azure/workspace/pipelines/create)
quality_monitor kwaliteitsmonitorobject
geregistreerd_model (Unity-catalogus) geregistreerde modelobjecten
schema (Unity Catalog) Schema-object
volume (Unity Catalog) volumeobject

app

De app-resource definieert een Databricks-app. Zie Wat is Databricks Apps?.

Tip (only if context indicates that it refers to a suggestion or advice)

U kunt een bundel initialiseren met een Streamlit Databricks-app met behulp van de volgende opdracht:

databricks bundle init https://github.com/databricks/bundle-examples --template-dir contrib/templates/streamlit-app

Als u een app wilt toevoegen, geeft u de objectvelden op die de app definiëren, evenals het volgende:

  • source_code_path: het lokale pad ./app van de broncode van de Databricks-app. Dit veld is vereist.
  • config: de app-configuratieopdrachten en omgevingsvariabelen. U kunt dit gebruiken om verschillende app-implementatiedoelen op te geven.

Voorbeeld

In het volgende voorbeeld wordt een app gemaakt met de naam my_app waarmee een taak wordt beheerd die door de bundel is gemaakt:

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"

Zie de GitHub-opslagplaats met bundelvoorbeelden van de Databricks-appvoor de volledige bundel van de Databricks-app.

groep

De clusterresource definieert een cluster voor alle doeleinden.

Voorbeeld

In het volgende voorbeeld wordt een cluster met de naam my_cluster gemaakt en ingesteld als het cluster dat moet worden gebruikt om het notebook uit te voeren in 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"

instrumentenpaneel

Met de dashboardresource kunt u AI/BI-dashboards in een bundel beheren. Zie Dashboardsvoor informatie over AI/BI-dashboards.

Voorbeeld

Het volgende voorbeeld bevat en implementeert het voorbeeld NYC Taxi Trip Analysis dashboard in de Databricks-werkruimte.

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}

Als u de gebruikersinterface gebruikt om het dashboard te wijzigen, worden wijzigingen die via de gebruikersinterface zijn aangebracht, niet toegepast op het JSON-dashboardbestand in de lokale bundel, tenzij u het expliciet bijwerkt met behulp van bundle generate. U kunt de optie --watch gebruiken om continu wijzigingen in het dashboard te peilen en op te halen. Zie Een bundelconfiguratiebestand genereren.

Als u bovendien probeert een bundel te implementeren die een JSON-dashboardbestand bevat dat anders is dan het bestand in de externe werkruimte, treedt er een fout op. Gebruik de optie --force om de implementatie te forceren en het dashboard in de externe werkruimte met die van de lokale werkruimte te overschrijven. Zie Een bundel implementeren.

experiment

De experimentresource stelt u in staat MLflow-experimenten in een bundel te definiëren. Zie Trainingsuitvoeringen organiseren met MLflow-experimentenvoor meer informatie over MLflow-experimenten.

Voorbeeld

In het volgende voorbeeld wordt een experiment gedefinieerd dat alle gebruikers kunnen bekijken:

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

baan

Met de jobresource kunt u banen en de bijbehorende taken in uw bundel definiëren. Zie Overzicht van indeling op Databricksvoor meer informatie over taken. Zie Een taak ontwikkelen in Azure Databricks met behulp van Databricks Asset Bundlesvoor een zelfstudie die gebruikmaakt van een Databricks Asset Bundles-sjabloon om een taak te maken.

Voorbeeld

In het volgende voorbeeld wordt een job gedefinieerd met de resourcesleutel hello-job en bevat deze één notebooktaak.

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

Zie Taken toevoegen aan taken in Databricks Asset Bundles, Taaktaken overschrijven in Databricks Asset Bundlesen Clusterinstellingen overschrijven in Databricks Asset Bundlesvoor informatie over het definiëren van taaktaken.

model (verouderd)

Met de modelresource kunt u in bundels verouderde modellen definiëren. Databricks raadt u aan om in plaats daarvan Unity Catalog geregistreerde modellen te gebruiken.

modelbedieningspunt

Met de model_serving_endpoint resource kunt u model voor eindpunten definiëren. Zie Model beheren voor eindpunten.

Voorbeeld

In het volgende voorbeeld wordt een Unity Catalog-model gedefinieerd dat het eindpunt 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"

kwaliteitsmonitor (Unity Catalog)

Met de quality_monitor-resource kunt u een Unity Catalog tabelmonitor definiëren. Zie Modelkwaliteit en eindpuntstatus bewakenvoor meer informatie over monitors.

Voorbeeld

In het volgende voorbeeld wordt een kwaliteitsmonitor gedefinieerd:

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

geregistreerd_model (Unity Catalog)

Met de geregistreerde modelresource kunt u modellen definiëren in Unity Catalog. Zie Levenscyclus van modellen beheren in Unity Catalogvoor informatie over Unity Catalog geregistreerde modellen.

Voorbeeld

In het volgende voorbeeld wordt een geregistreerd model gedefinieerd in 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

pijpleiding

Met de pijplijnresource kunt u Delta Live Tables pijplijnen maken. Voor informatie over pipelines, zie Wat is Delta Live Tables?. Zie Pijplijnen voor Delta Live Tables ontwikkelen met Databricks Asset Bundlesvoor een zelfstudie waarin de sjabloon Databricks Asset Bundles wordt gebruikt om een pijplijn te maken.

Voorbeeld

In het volgende voorbeeld wordt een pijplijn gedefinieerd met de resource-sleutel 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)

Met het schemaresourcetype kunt u Unity Catalog schema's definiëren voor tabellen en andere assets in uw werkstromen en pijplijnen die zijn gemaakt als onderdeel van een bundel. Een schema, afgezien van andere resourcetypen, heeft de volgende beperkingen:

  • De eigenaar van een schemaresource is altijd de implementatiegebruiker en kan niet worden gewijzigd. Als run_as is opgegeven in de bundel, wordt deze genegeerd door bewerkingen in het schema.
  • Alleen velden die worden ondersteund door het bijbehorende Schemas-object maken API zijn beschikbaar voor de schemaresource. enable_predictive_optimization wordt bijvoorbeeld niet ondersteund, omdat enable_predictive_optimization alleen beschikbaar is op de update-API.

Voorbeelden

In het volgende voorbeeld wordt een pijplijn gedefinieerd met de resourcesleutel my_pipeline waarmee een Unity Catalog-schema wordt gemaakt met de sleutel my_schema als doel:

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.

Een toewijzing van subsidies op het hoogste niveau wordt niet ondersteund door Databricks Asset Bundles. Als u dus subsidies voor een schema wilt instellen, definieert u de subsidies voor het schema binnen de schemas-toewijzing. Zie Machtigingen weergeven, verlenen en intrekkenvoor meer informatie over subsidies.

In het volgende voorbeeld wordt een Unity Catalog-schema met subsidies gedefinieerd:

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

volume (Unity Catalog)

Met het type volumeresource kunt u Unity Catalog-volumes definiëren en maken volumes als onderdeel van een bundel. Wanneer u een bundel implementeert met een volume dat is gedefinieerd, moet u er rekening mee houden dat:

  • Er kan niet naar een volume worden verwezen in de artifact_path voor de bundel voordat het in de werkruimte aanwezig is. Dus als u Databricks Asset Bundles wilt gebruiken om het volume te maken, moet u eerst het volume in de bundel definiëren, implementeren om het volume te maken en vervolgens in de artifact_path in volgende implementaties ernaar verwijzen.
  • Volumes in het pakket worden niet voorafgegaan door het dev_${workspace.current_user.short_name} voorvoegsel wanneer het implementatiedoel mode: development is geconfigureerd. U kunt dit voorvoegsel echter handmatig configureren. Zie Aangepaste voorinstellingen.

Voorbeeld

In het volgende voorbeeld wordt een Unity Catalog-volume gemaakt met de sleutel my_volume:

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

Voor een voorbeeldbundel die een taak uitvoert die naar een bestand schrijft in een Unity Catalog volume, zie de GitHub-opslagplaats .