Configuratie van Databricks Asset Bundle
In dit artikel worden de syntaxis beschreven voor configuratiebestanden van Databricks Asset Bundle, die Databricks Asset Bundles definiëren. Zie Wat zijn Databricks-assetbundels?
Een bundelconfiguratiebestand moet worden uitgedrukt in YAML-indeling en moet minimaal de bundeltoewijzing op het hoogste niveau bevatten. Elke bundel moet minimaal één (en slechts één) bundelconfiguratiebestand met de naam databricks.yml
bevatten. Als er meerdere bundelconfiguratiebestanden zijn, moet naar het databricks.yml
bestand worden verwezen met behulp van de include
toewijzing.
Zie de officiële YAML-specificatie en zelfstudie voor meer informatie over YAML.
Als u bundelconfiguratiebestanden wilt maken en ermee wilt werken, raadpleegt u de ontwikkeling van Databricks Asset Bundles.
Overzicht
Deze sectie bevat een visuele weergave van het schema van het bundelconfiguratiebestand. Zie Toewijzingen voor meer informatie.
# This is the default bundle configuration if not otherwise overridden in
# the "targets" top-level mapping.
bundle: # Required.
name: string # Required.
databricks_cli_version: string
cluster_id: string
git:
origin_url: string
branch: string
# These are for any custom variables for use throughout the bundle.
variables:
<some-unique-variable-name>:
description: string
default: string or complex
# These are the default workspace settings if not otherwise overridden in
# the following "targets" top-level mapping.
workspace:
artifact_path: string
auth_type: string
azure_client_id: string # For Azure Databricks only.
azure_environment: string # For Azure Databricks only.
azure_login_app_id: string # For Azure Databricks only. Non-operational and reserved for future use.
azure_tenant_id: string # For Azure Databricks only.
azure_use_msi: true | false # For Azure Databricks only.
azure_workspace_resource_id: string # For Azure Databricks only.
client_id: string # For Databricks on AWS only.
file_path: string
google_service_account: string # For Databricks on Google Cloud only.
host: string
profile: string
root_path: string
state_path: string
# These are the permissions to apply to experiments, jobs, models, and pipelines defined
# in the "resources" mapping.
permissions:
- level: <permission-level>
group_name: <unique-group-name>
- level: <permission-level>
user_name: <unique-user-name>
- level: <permission-level>
service_principal_name: <unique-principal-name>
# These are the default artifact settings if not otherwise overridden in
# the following "targets" top-level mapping.
artifacts:
<some-unique-artifact-identifier>:
build: string
files:
- source: string
path: string
type: string
# These are any additional configuration files to include.
include:
- "<some-file-or-path-glob-to-include>"
- "<another-file-or-path-glob-to-include>"
# This is the identity to use to run the bundle
run_as:
- user_name: <user-name>
- service_principal_name: <service-principal-name>
# These are the default job and pipeline settings if not otherwise overridden in
# the following "targets" top-level mapping.
resources:
dashboards:
<some-unique-programmatic-identifier-for-this-dashboard>:
# See the REST API create request payload reference for dashboards.
experiments:
<some-unique-programmatic-identifier-for-this-experiment>:
# See the REST API create request payload reference for experiments.
jobs:
<some-unique-programmatic-identifier-for-this-job>:
# See REST API create request payload reference for jobs.
models:
<some-unique-programmatic-identifier-for-this-model>:
# See the REST API create request payload reference for models.
pipelines:
<some-unique-programmatic-identifier-for-this-pipeline>:
# See the REST API create request payload reference for Delta Live Tables (pipelines).
schemas:
<some-unique-programmatic-identifier-for-this-schema>:
# See the Unity Catalog schema request payload reference.
# These are any additional files or paths to include or exclude.
sync:
include:
- "<some-file-or-path-glob-to-include>"
- "<another-file-or-path-glob-to-include>"
exclude:
- "<some-file-or-path-glob-to-exclude>"
- "<another-file-or-path-glob-to-exclude>"
paths:
- "<some-file-or-path-to-synchronize>"
# These are the targets to use for deployments and workflow runs. One and only one of these
# targets can be set to "default: true".
targets:
<some-unique-programmatic-identifier-for-this-target>:
artifacts:
# See the preceding "artifacts" syntax.
bundle:
# See the preceding "bundle" syntax.
cluster_id: string
default: true | false
mode: development
presets:
<preset>: <value>
resources:
# See the preceding "resources" syntax.
sync:
# See the preceding "sync" syntax.
variables:
<preceding-unique-variable-name>: <non-default-value>
workspace:
# See the preceding "workspace" syntax.
run_as:
# See the preceding "run_as" syntax.
Voorbeelden
Notitie
Zie Voorbeelden van bundelconfiguraties en de opslagplaats met bundelvoorbeelden in GitHub voor configuratievoorbeelden waarin bundelfuncties en algemene gebruiksvoorbeelden voor bundels worden gedemonstreert.
In de volgende voorbeeldbundelconfiguratie wordt een lokaal bestand opgegeven hello.py
dat zich in dezelfde map bevindt als dit lokale bundelconfiguratiebestand met de naam databricks.yml
. Dit notebook wordt uitgevoerd als een taak met behulp van het externe cluster met de opgegeven cluster-id. De URL van de externe werkruimte en verificatiereferenties voor werkruimten worden gelezen uit het lokale configuratieprofiel van de beller met de naam DEFAULT
.
Databricks raadt u aan om de host
toewijzing te gebruiken in plaats van de default
toewijzing waar mogelijk, omdat uw bundelconfiguratiebestanden hierdoor draagbaarder worden. Als u de host
toewijzing instelt, krijgt de Databricks CLI de opdracht om een overeenkomend profiel in uw .databrickscfg
bestand te vinden en vervolgens de velden van dat profiel te gebruiken om te bepalen welk Databricks-verificatietype moet worden gebruikt. Als er meerdere profielen met een overeenkomend host
veld in uw .databrickscfg
bestand bestaan, moet u de profile
Databricks CLI instrueren over welk specifiek profiel u wilt gebruiken. Zie de prod
doeldeclaratie verderop in deze sectie voor een voorbeeld.
Met deze techniek kunt u de taakdefinities en -instellingen in het resources
blok opnieuw gebruiken en overschrijven:
bundle:
name: hello-bundle
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 1234-567890-abcde123
notebook_task:
notebook_path: ./hello.py
targets:
dev:
default: true
Hoewel het volgende bundelconfiguratiebestand functioneel gelijkwaardig is, is het niet modulair, waardoor het niet goed hergebruik mogelijk is. Deze declaratie voegt ook een taak toe aan de taak in plaats van de bestaande taak te overschrijven:
bundle:
name: hello-bundle
targets:
dev:
default: true
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 1234-567890-abcde123
notebook_task:
notebook_path: ./hello.py
In het volgende voorbeeld wordt een doel toegevoegd met de naam prod
die gebruikmaakt van een andere EXTERNE werkruimte-URL en verificatiereferenties voor werkruimte, die worden gelezen uit de overeenkomende host
vermelding van .databrickscfg
het bestand van de beller met de opgegeven werkruimte-URL. Deze taak voert dezelfde notebook uit, maar gebruikt een ander extern cluster met de opgegeven cluster-id. U hoeft de toewijzing niet binnen de notebook_task
prod
toewijzing te declareren, omdat deze terugvalt om de notebook_task
toewijzing binnen de toewijzing op het hoogste niveau resources
te gebruiken, als de notebook_task
toewijzing niet expliciet wordt overschreven binnen de prod
toewijzing.
bundle:
name: hello-bundle
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 1234-567890-abcde123
notebook_task:
notebook_path: ./hello.py
targets:
dev:
default: true
prod:
workspace:
host: https://<production-workspace-url>
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 2345-678901-fabcd456
Deze taak valideren, implementeren en uitvoeren binnen het dev
doel:
# Because the "dev" target is set to "default: true",
# you do not need to specify "-t dev":
databricks bundle validate
databricks bundle deploy
databricks bundle run hello_job
# But you can still explicitly specify it, if you want or need to:
databricks bundle validate
databricks bundle deploy -t dev
databricks bundle run -t dev hello_job
In plaats daarvan kunt u deze taak valideren, implementeren en uitvoeren binnen het prod
doel:
# You must specify "-t prod", because the "dev" target
# is already set to "default: true":
databricks bundle validate
databricks bundle deploy -t prod
databricks bundle run -t prod hello_job
Hieronder ziet u het vorige voorbeeld, maar splitst u op in onderdeelbestanden voor nog meer modularisatie en hergebruikt u meerdere bundelconfiguratiebestanden. Met deze techniek kunt u niet alleen verschillende definities en instellingen opnieuw gebruiken, maar u kunt ook een van deze bestanden wisselen met andere bestanden die volledig andere declaraties bieden:
databricks.yml
:
bundle:
name: hello-bundle
include:
- "bundle*.yml"
bundle.resources.yml
:
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 1234-567890-abcde123
notebook_task:
notebook_path: ./hello.py
bundle.targets.yml
:
targets:
dev:
default: true
prod:
workspace:
host: https://<production-workspace-url>
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 2345-678901-fabcd456
Toewijzingen
In de volgende secties worden de syntaxis van het bundelconfiguratiebestand beschreven op basis van de toewijzing op het hoogste niveau.
bundel
Een configuratiebestand voor bundels mag slechts één toewijzing op het hoogste niveau bundle
bevatten die de inhoud van de bundel en de instellingen van de Azure Databricks-werkruimte koppelt.
Deze bundle
toewijzing moet een name
toewijzing bevatten die een programmatische (of logische) naam voor de bundel aangeeft. In het volgende voorbeeld wordt een bundel met de programmatische (of logische) naam hello-bundle
declareren.
bundle:
name: hello-bundle
Een bundle
toewijzing kan ook een onderliggend element zijn van een of meer doelen in de toewijzing van doelen op het hoogste niveau. Elk van deze onderliggende bundle
toewijzingen geeft eventuele niet-standaard onderdrukkingen op doelniveau op. De waarde van name
de toewijzing op het hoogste niveau bundle
kan echter niet worden overschreven op het doelniveau.
cluster_id
De bundle
toewijzing kan een onderliggende cluster_id
toewijzing hebben. Met deze toewijzing kunt u de id van een cluster opgeven die moet worden gebruikt als onderdrukking voor clusters die elders in het bundelconfiguratiebestand zijn gedefinieerd. Zie Cluster-URL en -id voor informatie over het ophalen van de id van een cluster.
De cluster_id
onderdrukking is bedoeld voor scenario's met alleen ontwikkeling en wordt alleen ondersteund voor het doel waarop mode
de toewijzing is ingesteld development
. Zie doelen voor meer informatie over de target
toewijzing.
compute_id
Notitie
Deze instelling is afgeschaft. Gebruik in plaats daarvan cluster_id .
De bundle
toewijzing kan een onderliggende compute_id
toewijzing hebben. Met deze toewijzing kunt u de id van een cluster opgeven die moet worden gebruikt als onderdrukking voor clusters die elders in het bundelconfiguratiebestand zijn gedefinieerd.
Git
U kunt details van Git-versiebeheer ophalen en overschrijven die aan uw bundel zijn gekoppeld. Dit is handig voor het toevoegen van aantekeningen aan uw geïmplementeerde resources. U wilt bijvoorbeeld de oorspronkelijke URL van uw opslagplaats opnemen in de beschrijving van een machine learning-model dat u implementeert.
Wanneer u een bundle
opdracht uitvoert, zoals validate
, deploy
of run
, wordt de bundle
configuratiestructuur van de opdracht gevuld met de volgende standaardinstellingen:
bundle.git.origin_url
, dat de oorspronkelijke URL van de opslagplaats vertegenwoordigt. Dit is dezelfde waarde die u zou krijgen als u de opdrachtgit config --get remote.origin.url
uit uw gekloonde opslagplaats hebt uitgevoerd. U kunt vervangingen gebruiken om naar deze waarde te verwijzen met uw bundelconfiguratiebestanden, zoals${bundle.git.origin_url}
.bundle.git.branch
, dat de huidige vertakking in de opslagplaats vertegenwoordigt. Dit is dezelfde waarde die u zou krijgen als u de opdrachtgit branch --show-current
uit uw gekloonde opslagplaats hebt uitgevoerd. U kunt vervangingen gebruiken om naar deze waarde te verwijzen met uw bundelconfiguratiebestanden, zoals${bundle.git.branch}
.bundle.git.commit
, dat deHEAD
doorvoer in de opslagplaats vertegenwoordigt. Dit is dezelfde waarde die u zou krijgen als u de opdrachtgit rev-parse HEAD
uit uw gekloonde opslagplaats hebt uitgevoerd. U kunt vervangingen gebruiken om naar deze waarde te verwijzen met uw bundelconfiguratiebestanden, zoals${bundle.git.commit}
.
Als u Git-instellingen wilt ophalen of overschrijven, moet uw bundel zich in een map bevinden die is gekoppeld aan een Git-opslagplaats, bijvoorbeeld een lokale map die wordt geïnitialiseerd door de opdracht uit te git clone
voeren. Als de map niet is gekoppeld aan een Git-opslagplaats, zijn deze Git-instellingen leeg.
U kunt de origin_url
en branch
instellingen binnen de toewijzing van uw toewijzing op het git
hoogste niveau bundle
als volgt overschrijven:
bundle:
git:
origin_url: <some-non-default-origin-url>
branch: <some-non-current-branch-name>
databricks_cli_version
De bundle
toewijzing kan een databricks_cli_version
toewijzing bevatten die de Databricks CLI-versie beperkt die is vereist voor de bundel. Dit kan problemen voorkomen die worden veroorzaakt door het gebruik van toewijzingen die niet worden ondersteund in een bepaalde versie van de Databricks CLI.
De Databricks CLI-versie voldoet aan semantische versiebeheer en de databricks_cli_version
toewijzing ondersteunt het opgeven van versiebeperkingen. Als de huidige databricks --version
waarde zich niet binnen de grenzen bevindt die zijn opgegeven in de toewijzing van databricks_cli_version
de bundel, treedt er een fout op wanneer databricks bundle validate
deze wordt uitgevoerd op de bundel. In de volgende voorbeelden ziet u enkele algemene syntaxis voor versiebeperkingen:
bundle:
name: hello-bundle
databricks_cli_version: "0.218.0" # require Databricks CLI 0.218.0
bundle:
name: hello-bundle
databricks_cli_version: "0.218.*" # allow all patch versions of Databricks CLI 0.218
bundle:
name: my-bundle
databricks_cli_version: ">= 0.218.0" # allow any version of Databricks CLI 0.218.0 or higher
bundle:
name: my-bundle
databricks_cli_version: ">= 0.218.0, <= 1.0.0" # allow any Databricks CLI version between 0.218.0 and 1.0.0, inclusive
Variabelen
Het instellingenbestand voor bundels kan één toewijzing op het hoogste niveau variables
bevatten waarbij aangepaste variabelen worden gedefinieerd. Stel voor elke variabele een optionele beschrijving, standaardwaarde in, of de aangepaste variabele een complex type is of zoekactie om een id-waarde op te halen, met behulp van de volgende indeling:
variables:
<variable-name>:
description: <variable-description>
default: <optional-default-value>
type: <optional-type-value> # "complex" is the only valid value
lookup:
<optional-object-type>: <optional-object-name>
Notitie
Variabelen worden ervan uitgegaan dat ze van het type string
zijn, tenzij type
deze is ingesteld op complex
. Zie Een complexe variabele definiëren.
Als u wilt verwijzen naar een aangepaste variabele in de bundelconfiguratie, gebruikt u de vervanging ${var.<variable_name>}
.
Werkruimte
Het configuratiebestand voor bundels kan slechts één toewijzing op het hoogste niveau workspace
bevatten om eventuele niet-standaardinstellingen voor Azure Databricks-werkruimten op te geven die moeten worden gebruikt.
Belangrijk
Geldige Databricks-werkruimtepaden beginnen met of /Workspace
/Volumes
. Aangepaste werkruimtepaden worden automatisch voorafgegaan door /Workspace
, dus als u een vervanging van het werkruimtepad in uw aangepaste pad gebruikt, zoals ${workspace.file_path}
, hoeft u niet vooraf te gaan /Workspace
aan het pad.
root_path
Deze workspace
toewijzing kan een root_path
toewijzing bevatten om een niet-standaardhoofdpad op te geven dat in de werkruimte moet worden gebruikt voor implementaties en werkstroomuitvoeringen, bijvoorbeeld:
workspace:
root_path: /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.name}/my-envs/${bundle.target}
Voor de Databricks CLI wordt standaard root_path
het standaardpad gebruikt, /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.name}/${bundle.target}
waarbij vervangingen worden gebruikt.
artifact_path
Deze workspace
toewijzing kan ook een artifact_path
toewijzing bevatten om een niet-standaardartefactpad op te geven dat in de werkruimte moet worden gebruikt voor implementaties en werkstroomuitvoeringen, bijvoorbeeld:
workspace:
artifact_path: /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.name}/my-envs/${bundle.target}/artifacts
Voor de Databricks CLI wordt standaard artifact_path
het standaardpad gebruikt, ${workspace.root}/artifacts
waarbij vervangingen worden gebruikt.
Notitie
De artifact_path
toewijzing biedt geen ondersteuning voor DBFS-paden (Databricks File System).
file_path
Deze workspace
toewijzing kan ook een file_path
toewijzing bevatten om een niet-standaardbestandspad op te geven dat in de werkruimte moet worden gebruikt voor implementaties en werkstroomuitvoeringen, bijvoorbeeld:
workspace:
file_path: /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.name}/my-envs/${bundle.target}/files
Voor de Databricks CLI wordt standaard file_path
het standaardpad gebruikt, ${workspace.root}/files
waarbij vervangingen worden gebruikt.
state_path
De state_path
toewijzing wordt standaard ingesteld op het standaardpad van ${workspace.root}/state
en vertegenwoordigt het pad in uw werkruimte om terraform-statusinformatie over implementaties op te slaan.
Andere werkruimtetoewijzingen
De workspace
toewijzing kan ook de volgende optionele toewijzingen bevatten om het Azure Databricks-verificatiemechanisme op te geven dat moet worden gebruikt. Als ze niet zijn opgegeven binnen deze workspace
toewijzing, moeten ze worden opgegeven in een workspace
toewijzing als een onderliggend element van een of meer van de doelen in de toewijzing van doelen op het hoogste niveau.
Belangrijk
U moet codewaarden instellen voor de volgende workspace
toewijzingen voor Azure Databricks-verificatie. U kunt bijvoorbeeld geen aangepaste variabelen opgeven voor de waarden van deze toewijzingen met behulp van de ${var.*}
syntaxis.
De
profile
toewijzing (of de of-p
opties--profile
bij het uitvoeren van de bundel valideren, implementeren, uitvoeren en vernietigen van opdrachten met de Databricks CLI) geeft de naam op van een configuratieprofiel dat moet worden gebruikt met deze werkruimte voor Azure Databricks-verificatie. Dit configuratieprofiel wordt toegewezen aan het profiel dat u hebt gemaakt bij het instellen van de Databricks CLI.Notitie
Databricks raadt u aan de
host
toewijzing te gebruiken (of de--profile
of-p
opties bij het uitvoeren van de bundelvalidatie, implementeren, uitvoeren en vernietigen van opdrachten met de Databricks CLI) in plaats van deprofile
toewijzing, omdat uw bundelconfiguratiebestanden hierdoor draagbaarder worden. Als u dehost
toewijzing instelt, krijgt de Databricks CLI de opdracht om een overeenkomend profiel in uw.databrickscfg
bestand te vinden en vervolgens de velden van dat profiel te gebruiken om te bepalen welk Databricks-verificatietype moet worden gebruikt. Als er meerdere profielen met een overeenkomendhost
veld in uw.databrickscfg
bestand bestaan, moet u deprofile
toewijzing (of de--profile
-p
opdrachtregelopties) gebruiken om de Databricks CLI te instrueren over welk profiel u wilt gebruiken. Zie deprod
doeldeclaratie in de voorbeelden voor een voorbeeld.De
host
toewijzing geeft de URL voor uw Azure Databricks-werkruimte op. Zie de URL per werkruimte.Voor OAuth M2M-verificatie (machine-to-machine) wordt de toewijzing
client_id
gebruikt. U kunt deze waarde ook instellen in de lokale omgevingsvariabeleDATABRICKS_CLIENT_ID
. U kunt ook een configuratieprofiel maken met declient_id
waarde en vervolgens de naam van het profiel opgeven met deprofile
toewijzing (of door de--profile
of-p
opties te gebruiken bij het uitvoeren van de bundelvalidatie, implementeren, uitvoeren en vernietigen van opdrachten met de Databricks CLI). Zie Toegang tot Azure Databricks verifiëren met een service-principal met behulp van OAuth (OAuth M2M).Notitie
U kunt geen Azure Databricks OAuth-geheime waarde opgeven in het configuratiebestand voor bundels. Stel in plaats daarvan de lokale omgevingsvariabele
DATABRICKS_CLIENT_SECRET
in. U kunt ook declient_secret
waarde toevoegen aan een configuratieprofiel en vervolgens de naam van het profiel opgeven met deprofile
toewijzing (of met behulp van de--profile
of-p
opties bij het uitvoeren van de bundelvalidatie, implementeren, uitvoeren en vernietigen van opdrachten met de Databricks CLI).Voor Azure CLI-verificatie wordt de toewijzing
azure_workspace_resource_id
gebruikt. U kunt deze waarde ook instellen in de lokale omgevingsvariabeleDATABRICKS_AZURE_RESOURCE_ID
. U kunt ook een configuratieprofiel maken met deazure_workspace_resource_id
waarde en vervolgens de naam van het profiel opgeven met deprofile
toewijzing (of door de--profile
of-p
opties te gebruiken bij het uitvoeren van de bundelvalidatie, implementeren, uitvoeren en vernietigen van opdrachten met de Databricks CLI). Zie Azure CLI-verificatie.Voor verificatie van azure-clientgeheimen met service-principals, de toewijzingen
azure_workspace_resource_id
enazure_tenant_id
azure_client_id
worden deze gebruikt. U kunt deze waarden ook instellen in de lokale omgevingsvariabelenDATABRICKS_AZURE_RESOURCE_ID
enARM_TENANT_ID
ARM_CLIENT_ID
respectievelijk. U kunt ook een configuratieprofiel maken met deazure_workspace_resource_id
, enazure_tenant_id
waarden enazure_client_id
vervolgens de naam van het profiel opgeven met deprofile
toewijzing (of met behulp van de--profile
of-p
opties bij het uitvoeren van de bundel valideren, implementeren, uitvoeren en vernietigen van opdrachten met de Databricks CLI). Zie verificatie van MS Entra-service-principal.Notitie
U kunt geen azure-clientgeheimwaarde opgeven in het configuratiebestand van de bundel. Stel in plaats daarvan de lokale omgevingsvariabele
ARM_CLIENT_SECRET
in. U kunt ook deazure_client_secret
waarde toevoegen aan een configuratieprofiel en vervolgens de naam van het profiel opgeven met deprofile
toewijzing (of met behulp van de--profile
of-p
opties bij het uitvoeren van de bundelvalidatie, implementeren, uitvoeren en vernietigen van opdrachten met de Databricks CLI).Voor verificatie van door Azure beheerde identiteiten worden de toewijzingen
azure_use_msi
enazure_client_id
azure_workspace_resource_id
gebruikt. U kunt deze waarden ook instellen in de lokale omgevingsvariabelenARM_USE_MSI
enARM_CLIENT_ID
DATABRICKS_AZURE_RESOURCE_ID
respectievelijk. U kunt ook een configuratieprofiel maken met deazure_use_msi
, enazure_client_id
waarden enazure_workspace_resource_id
vervolgens de naam van het profiel opgeven met deprofile
toewijzing (of met behulp van de--profile
of-p
opties bij het uitvoeren van de bundel valideren, implementeren, uitvoeren en vernietigen van opdrachten met de Databricks CLI). Zie verificatie van door Azure beheerde identiteiten.Met de
azure_environment
toewijzing wordt het Azure-omgevingstype (zoals Public, UsGov, China en Duitsland) opgegeven voor een specifieke set API-eindpunten. De standaardwaarde isPUBLIC
. U kunt deze waarde ook instellen in de lokale omgevingsvariabeleARM_ENVIRONMENT
. U kunt ook deazure_environment
waarde toevoegen aan een configuratieprofiel en vervolgens de naam van het profiel opgeven met deprofile
toewijzing (of met behulp van de--profile
of-p
opties bij het uitvoeren van de bundelvalidatie, implementeren, uitvoeren en vernietigen van opdrachten met de Databricks CLI).De
azure_login_app_id
toewijzing is niet operationeel en is gereserveerd voor intern gebruik.Met
auth_type
de toewijzing wordt het verificatietype Azure Databricks opgegeven dat moet worden gebruikt, met name in gevallen waarin de Databricks CLI een onverwacht verificatietype afgeeft. Zie de verificatietoegang tot Azure Databricks-resources.
Machtigingen
De toewijzing op het hoogste niveau permissions
geeft een of meer machtigingsniveaus op die moeten worden toegepast op alle resources die in de bundel zijn gedefinieerd. Als u machtigingen wilt toepassen op een specifieke resource, raadpleegt u Machtigingen definiëren voor een specifieke resource.
Toegestane machtigingsniveaus op het hoogste niveau zijn CAN_VIEW
, CAN_MANAGE
en CAN_RUN
.
In het volgende voorbeeld in een bundelconfiguratiebestand worden machtigingsniveaus gedefinieerd voor een gebruiker, groep en service-principal, die worden toegepast op alle taken, pijplijnen, experimenten en modellen die in resources
de bundel zijn gedefinieerd:
permissions:
- level: CAN_VIEW
group_name: test-group
- level: CAN_MANAGE
user_name: someone@example.com
- level: CAN_RUN
service_principal_name: 123456-abcdef
Artefacten
Met de toewijzing op het hoogste niveau artifacts
worden een of meer artefacten opgegeven die automatisch tijdens bundelimplementaties worden gebouwd en later in bundeluitvoeringen kunnen worden gebruikt. Elk onderliggend artefact ondersteunt de volgende toewijzingen:
type
is vereist. Als u een Python-wielbestand wilt maken voordat u implementeert, moet deze toewijzing worden ingesteld opwhl
.path
is een optioneel, relatief pad van de locatie van het bundelconfiguratiebestand naar de locatie van het Bestand van het Python-wielbestandsetup.py
. Alspath
dit niet is inbegrepen, probeert de Databricks CLI het bestand vansetup.py
het Python-wielbestand te vinden in de hoofdmap van de bundel.files
is een optionele toewijzing die een onderliggendesource
toewijzing bevat, die u kunt gebruiken om niet-standaardlocaties op te geven die moeten worden opgenomen voor complexe build-instructies. Locaties worden opgegeven als relatieve paden vanaf de locatie van het bundelconfiguratiebestand.build
is een optionele set niet-standaard buildopdrachten die u lokaal wilt uitvoeren vóór de implementatie. Voor Python-wheel-builds gaat de Databricks CLI ervan uit dat het een lokale installatie van het Python-pakketwheel
kan vinden om builds uit te voeren en dat de opdrachtpython setup.py bdist_wheel
standaard wordt uitgevoerd tijdens elke bundelimplementatie. Als u meerdere buildopdrachten wilt opgeven, scheidt u elke opdracht met dubbele ampersand (&&
) tekens.
Zie Een Python-wielbestand ontwikkelen met behulp van Databricks Asset Bundles voor meer informatie, waaronder een voorbeeldbundel die gebruikmaakt artifacts
van Een Python-wielbestand.
Tip
U kunt de instellingen voor artefacten in bundels definiëren, combineren en overschrijven met behulp van de technieken die worden beschreven in artefactinstellingen dynamisch definiëren in Databricks Asset Bundles.
bevatten
De include
matrix geeft een lijst met padglobs die configuratiebestanden bevatten die in de bundel moeten worden opgenomen. Deze padglobs zijn relatief ten opzichte van de locatie van het bundelconfiguratiebestand waarin de padglobs worden opgegeven.
De Databricks CLI bevat standaard geen configuratiebestanden in de bundel. U moet de include
matrix gebruiken om alle configuratiebestanden op te geven die moeten worden opgenomen in de bundel, behalve het databricks.yml
bestand zelf.
Deze include
matrix kan alleen worden weergegeven als een toewijzing op het hoogste niveau.
De volgende voorbeeldconfiguratie bevat drie configuratiebestanden. Deze bestanden bevinden zich in dezelfde map als het bundelconfiguratiebestand:
include:
- "bundle.artifacts.yml"
- "bundle.resources.yml"
- "bundle.targets.yml"
De volgende voorbeeldconfiguratie bevat alle bestanden met bestandsnamen die beginnen met bundle
en eindigen met .yml
. Deze bestanden bevinden zich in dezelfde map als het bundelconfiguratiebestand:
include:
- "bundle*.yml"
weg
De resources
toewijzing bevat informatie over de Azure Databricks-resources die door de bundel worden gebruikt.
Deze resources
toewijzing kan worden weergegeven als een toewijzing op het hoogste niveau of kan een onderliggend element zijn van een of meer doelen in de toewijzing van doelen op het hoogste niveau en bevat nul of een van de ondersteunde resourcetypen. Elke toewijzing van resourcetypen bevat een of meer afzonderlijke resourcedeclaraties, die elk een unieke naam moeten hebben. Deze afzonderlijke resourcedeclaraties maken gebruik van de nettolading van de aanvraag van het bijbehorende object, uitgedrukt in YAML, om de resource te definiëren. Ondersteunde eigenschappen voor een resource zijn de ondersteunde velden van het bijbehorende object.
Nettoladingen voor bewerkingsaanvragen worden gedocumenteerd in de Databricks REST API-verwijzing en de databricks bundle schema
opdracht voert alle ondersteunde objectschema's uit. Bovendien retourneert de databricks bundle validate
opdracht waarschuwingen als onbekende resource-eigenschappen worden gevonden in bundelconfiguratiebestanden.
De volgende tabel bevat ondersteunde resourcetypen voor bundels en koppelingen naar documentatie over de bijbehorende nettoladingen.
Brontype | Resourcetoewijzingen |
---|---|
cluster | Clustertoewijzingen: POST /api/2.1/clusters/create |
dashboard | Dashboardtoewijzingen: POST /api/2.0/lakeview/dashboards |
experiment | Experimenttoewijzingen: POST /api/2.0/mlflow/experiments/create |
baan | Taaktoewijzingen: POST /api/2.1/jobs/create Zie taaktypen en overschrijf nieuwe taakclusterinstellingen voor meer informatie. |
pijpleiding | Pijplijntoewijzingen: POST /api/2.0/pipelines |
model | Modeltoewijzingen: POST /api/2.0/mlflow/registered-models/create |
model_serving_endpoint | Model voor eindpunttoewijzingen: POST /api/2.0/serving-endpoints |
registered_model (Unity Catalog) | Toewijzingen van Unity Catalog-modellen: POST /api/2.1/unity-catalog/models |
schema (Unity Catalog) | Schematoewijzingen voor Unity Catalog: POST /api/2.1/unity-catalog/schema's |
Alle paden naar mappen en bestanden waarnaar wordt verwezen door resourcedeclaraties, zijn relatief ten opzichte van de locatie van het bundelconfiguratiebestand waarin deze paden worden opgegeven.
cluster
Met de clusterresource kunt u clusters voor alle doeleinden maken. In het volgende voorbeeld wordt een cluster gemaakt met de naam my_cluster
en wordt ingesteld dat als het cluster wordt 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
existing_cluster_id: ${resources.clusters.my_cluster.id}
notebook_task:
notebook_path: "./src/my_notebook.py"
Dashboard
Met de dashboardresource kunt u AI/BI-dashboards in een bundel beheren. Zie Dashboards voor informatie over AI/BI-dashboards.
Het volgende voorbeeld bevat en implementeert het voorbeelddashboard van NYC Taxi Trip Analysis naar 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 --watch
optie gebruiken om voortdurend 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 --force
de optie om het dashboard in de externe werkruimte af te dwingen en te overschrijven met de lokale werkruimte. Zie Een bundel implementeren.
taak
In het volgende voorbeeld wordt een taak met de resourcesleutel van hello-job
:
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 1234-567890-abcde123
notebook_task:
notebook_path: ./hello.py
pijpleiding
In het volgende voorbeeld wordt een pijplijn met de resourcesleutel van 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
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
deze is opgegeven in de bundel, wordt deze genegeerd door bewerkingen in het schema. - Alleen velden die worden ondersteund door de bijbehorende API voor het maken van schema's-objecten, zijn beschikbaar voor de
schema
resource. Wordt bijvoorbeeld niet ondersteund omdatenable_predictive_optimization
deze alleen beschikbaar is in de update-API.
In het volgende voorbeeld wordt een pijplijn met de resourcesleutel my_pipeline
declareren 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 subsidies voor een schema wilt instellen, definieert u de subsidies voor het schema binnen de schemas
toewijzing:
schemas:
my_schema:
name: test-schema
grants:
- principal: users
privileges:
- CAN_MANAGE
- principal: my_team
privileges:
- CAN_READ
catalog_name: main
comment: "my schema with grants"
Sync
Met de sync
toewijzing kunt u configureren welke bestanden deel uitmaken van uw bundelimplementaties.
opnemen en uitsluiten
De include
en exclude
toewijzingen binnen de sync
toewijzing specificeren een lijst met bestanden of mappen die moeten worden opgenomen in, of uitgesloten van, bundelimplementaties, afhankelijk van de volgende regels:
- Op basis van een lijst met bestands- en padglobs in een
.gitignore
bestand in de hoofdmap van de bundel kan deinclude
toewijzing een lijst met bestandsglobs, padglobs of beide bevatten, ten opzichte van de hoofdmap van de bundel, om expliciet op te nemen. - Op basis van een lijst met bestands- en padglobs in een
.gitignore
bestand in de hoofdmap van de bundel, plus de lijst met bestands- en padglobs in deinclude
toewijzing, kan deexclude
toewijzing een lijst met bestandsglobs, padglobs of beide, ten opzichte van de hoofdmap van de bundel, bevatten om expliciet uit te sluiten.
Alle paden naar opgegeven bestanden en mappen zijn relatief ten opzichte van de locatie van het bundelconfiguratiebestand waarin ze zijn opgegeven.
De syntaxis voor include
en exclude
bestands- en padpatronen volgen de standaardpatroonsyntaxis .gitignore
. Zie gitignore Pattern Format.
Als het volgende .gitignore
bestand bijvoorbeeld de volgende vermeldingen bevat:
.databricks
my_package/dist
Het configuratiebestand voor de bundel bevat de volgende include
toewijzing:
sync:
include:
- my_package/dist/*.whl
Vervolgens worden alle bestanden in de my_package/dist
map met de bestandsextensie *.whl
opgenomen. Alle andere bestanden in de my_package/dist
map zijn niet opgenomen.
Als het configuratiebestand van de bundel echter ook de volgende exclude
toewijzing bevat:
sync:
include:
- my_package/dist/*.whl
exclude:
- my_package/dist/delete-me.whl
Vervolgens worden alle bestanden in de my_package/dist
map met een bestandsextensie van *.whl
, behalve het bestand met de naam delete-me.whl
, opgenomen. Alle andere bestanden in de my_package/dist
map zijn ook niet opgenomen.
De sync
toewijzing kan ook worden gedeclareerd in de targets
toewijzing voor een specifiek doel. Elke sync
toewijzing die in een doel is gedeclareerd, wordt samengevoegd met declaraties op het hoogste niveau sync
. Als u bijvoorbeeld verdergaat met het voorgaande voorbeeld, wordt de volgende include
toewijzing op niveau targets
samengevoegd met de include
toewijzing in de toewijzing op het hoogste niveau sync
:
targets:
dev:
sync:
include:
- my_package/dist/delete-me.whl
Paden
De sync
toewijzing kan een paths
toewijzing bevatten waarmee lokale paden worden opgegeven die moeten worden gesynchroniseerd met de werkruimte. Met de paths
toewijzing kunt u algemene bestanden delen tussen bundels en kunt u bestanden synchroniseren die zich buiten de hoofdmap van de bundel bevinden. (De hoofdmap van de bundel is de locatie van het databricks.yml-bestand.) Dit is vooral handig wanneer u één opslagplaats hebt die als host fungeert voor meerdere bundels en bibliotheken, codebestanden of configuratie wilt delen.
Opgegeven paden moeten relatief zijn ten opzichte van bestanden en mappen die zijn verankerd in de map waarin de paths
toewijzing is ingesteld. Als een of meer padwaarden de map doorkruisen naar een bovenliggend element van de hoofdmap van de bundel, wordt het hoofdpad dynamisch bepaald om ervoor te zorgen dat de mapstructuur intact blijft. Als de hoofdmap van de bundel bijvoorbeeld de naam my_bundle
heeft, synchroniseert deze configuratie databricks.yml
de common
map die zich één niveau boven de hoofdmap van de bundel bevindt en de hoofdmap van de bundel zelf:
sync:
paths:
- ../common
- .
Een implementatie van deze bundel resulteert in de volgende mapstructuur in de werkruimte:
common/
common_file.txt
my_bundle/
databricks.yml
src/
...
Doelstellingen
De targets
toewijzing geeft een of meer contexten op waarin Azure Databricks-werkstromen moeten worden uitgevoerd. Elk doel is een unieke verzameling artefacten, azure Databricks-werkruimte-instellingen en Azure Databricks-taak- of pijplijndetails.
De targets
toewijzing bestaat uit een of meer doeltoewijzingen, die elk een unieke programmatische (of logische) naam moeten hebben.
Deze targets
toewijzing is optioneel, maar wordt ten zeerste aanbevolen. Als deze is opgegeven, kan deze alleen worden weergegeven als een toewijzing op het hoogste niveau.
De instellingen in de werkruimte, artefacten en resourcetoewijzingen op het hoogste niveau worden gebruikt als ze niet zijn opgegeven in een targets
toewijzing, maar conflicterende instellingen worden overschreven door de instellingen binnen een doel.
Een doel kan ook de waarden van variabelen op het hoogste niveau overschrijven.
default
Als u een doelstandaard wilt opgeven voor bundelopdrachten, stelt u de default
toewijzing in op true
. Dit doel met de naam dev
is bijvoorbeeld het standaarddoel:
targets:
dev:
default: true
Als een standaarddoel niet is geconfigureerd of als u taken of pijplijnen binnen een specifiek doel wilt valideren, implementeren en uitvoeren, gebruikt u de -t
optie van de bundelopdrachten.
De volgende opdrachten valideren, implementeren en uitvoeren my_job
binnen de dev
en prod
doelen:
databricks bundle validate
databricks bundle deploy -t dev
databricks bundle run -t dev my_job
databricks bundle validate
databricks bundle deploy -t prod
databricks bundle run -t prod my_job
In het volgende voorbeeld worden twee doelen declareren. Het eerste doel heeft de naam dev
en is het standaarddoel dat wordt gebruikt wanneer er geen doel is opgegeven voor bundelopdrachten. Het tweede doel heeft de naam prod
en wordt alleen gebruikt wanneer dit doel is opgegeven voor bundelopdrachten.
targets:
dev:
default: true
prod:
workspace:
host: https://<production-workspace-url>
modus en voorinstellingen
Om eenvoudige ontwikkel- en CI/CD-best practices mogelijk te maken, biedt Databricks Asset Bundles implementatiemodi voor doelen die standaardgedrag instellen voor preproductie- en productiewerkstromen. Sommige gedragingen kunnen ook worden geconfigureerd. Zie de implementatiemodi voor Databricks Asset Bundle voor meer informatie.
Tip
Als u uitvoeringsidentiteiten voor bundels wilt instellen, kunt u opgeven voor elk doel, zoals beschreven in Een uitvoeringsidentiteit opgeven run_as
voor een Databricks Asset Bundles-werkstroom.
Als u wilt opgeven dat een doel wordt behandeld als een ontwikkelingsdoel, voegt u de mode
toewijzingsset toe aan development
. Als u wilt opgeven dat een doel wordt behandeld als een productiedoel, voegt u de mode
toewijzingsset toe aan production
. Dit doel met de naam prod
wordt bijvoorbeeld behandeld als een productiedoel:
targets:
prod:
mode: production
U kunt enkele van de gedragingen aanpassen met behulp van de presets
toewijzing. Zie Aangepaste voorinstellingen voor een lijst met beschikbare voorinstellingen. In het volgende voorbeeld ziet u een aangepast productiedoel waarmee alle productiebronnen worden voorafgegaan en gelabeld:
targets:
prod:
mode: production
presets:
name_prefix: "production_" # prefix all resource names with production_
tags:
prod: true
Als beide mode
en presets
zijn ingesteld, overschrijven vooraf ingestelde instellingen het standaardgedrag van de modus. Instellingen van afzonderlijke resources overschrijven de voorinstellingen. Als een planning bijvoorbeeld is ingesteld op UNPAUSED
, maar de trigger_pause_status
voorinstelling is ingesteld PAUSED
op , wordt het schema niet meer gebruikt.