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, omdatenable_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 deartifact_path
in volgende implementaties ernaar verwijzen. - Volumes in het pakket worden niet voorafgegaan door het
dev_${workspace.current_user.short_name}
voorvoegsel wanneer het implementatiedoelmode: 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 .