Distributionslägen för Databricks Asset Bundle
I den här artikeln beskrivs syntaxen för distributionslägena för Databricks Asset Bundle . Paket möjliggör programmatisk hantering av Azure Databricks-arbetsflöden. Se Vad är Databricks-tillgångspaket?
I CI/CD-arbetsflöden kodar, testar, distribuerar och kör utvecklare vanligtvis lösningar i olika faser eller lägen. Till exempel innehåller den enklaste uppsättningen lägen ett utvecklingsläge för validering före produktion, följt av ett produktionsläge för verifierade slutprodukt. Databricks Asset Bundles innehåller en valfri samling standardbeteenden som motsvarar var och en av dessa lägen. Om du vill använda dessa beteenden för ett specifikt mål anger du en mode
eller konfigurerar presets
för ett mål i targets
konfigurationsmappning. Mer information om targets
finns i paketkonfigurationsmålmappning.
Utvecklingsläge
Om du vill distribuera ditt paket i utvecklingsläge måste du först lägga till mappningen mode
, inställd till development
, till det avsedda målet. Det här målet med namnet dev
behandlas till exempel som ett utvecklingsmål:
targets:
dev:
mode: development
När du distribuerar ett mål i utvecklingsläge genom att köra databricks bundle deploy -t <target-name>
kommandot implementeras följande beteenden, som kan anpassas med förinställningar:
- Förbereder alla resurser som inte distribueras som filer eller notebook-filer med prefixet
[dev ${workspace.current_user.short_name}]
och taggarna för varje distribuerat jobb och pipeline med endev
Azure Databricks-tagg. - Markerar alla relaterade distribuerade Delta Live Tables-pipelines som
development: true
. - Aktiverar användning av
--compute-id <cluster-id>
i relaterade anrop tillbundle deploy
kommandot, vilket åsidosätter alla befintliga klusterdefinitioner som redan har angetts i den relaterade paketkonfigurationsfilen. I stället för att använda--compute-id <cluster-id>
i relaterade anrop till kommandotbundle deploy
kan du angecompute_id
mappning här, eller som en underordnad mappning avbundle
mappning, till ID:t för klustret som ska användas. - Pausar alla scheman och utlösare för distribuerade resurser, till exempel jobb eller kvalitetsövervakare. Ta bort pausscheman och utlösare för ett enskilt jobb genom att ange
schedule.pause_status
tillUNPAUSED
. - Aktiverar samtidiga körningar på alla distribuerade jobb för snabbare iteration. Inaktivera samtidiga körningar för ett enskilt jobb genom att ange
max_concurrent_runs
till1
. - Inaktiverar distributionslåset för snabbare iteration. Det här låset förhindrar distributionskonflikter som sannolikt inte inträffar i utvecklingsläge. Återaktivera låset genom att ange
bundle.deployment.lock.enabled
tilltrue
.
Produktionsläge
Om du vill distribuera paketet i produktionsläge måste du först lägga till en mode
mappning, inställd på production
, till det avsedda målet. Det här målet med namnet prod
behandlas till exempel som ett produktionsmål:
targets:
prod:
mode: production
När du distribuerar ett mål i produktionsläge genom att köra databricks bundle deploy -t <target-name>
kommandot implementeras följande beteenden:
Verifierar att alla relaterade distribuerade Delta Live Tables-pipelines har markerats som
development: false
.Verifierar att den aktuella Git-grenen är lika med Git-grenen som anges i målet. Det är valfritt att ange en Git-gren i målet och kan göras med ytterligare en
git
egenskap enligt följande:git: branch: main
Den här verifieringen kan åsidosättas genom att
--force
ange när du distribuerar.Databricks rekommenderar att du använder tjänstens huvudnamn för produktionsdistributioner. Du kan framtvinga detta genom att ange
run_as
tjänstens huvudnamn. Se Hantera tjänstens huvudnamn och Ange en körningsidentitet för ett Databricks Asset Bundles-arbetsflöde. Observera följande ytterligare beteenden om du inte använder tjänstens huvudnamn:- Verifierar att
artifact_path
,file_path
,root_path
ellerstate_path
mappningar inte åsidosätts för en viss användare. - Verifierar att
run_as
mappningarna ochpermissions
anges för att klargöra vilka identiteter som har specifika behörigheter för distributioner.
- Verifierar att
Till skillnad från föregående beteende för att ställa in
mode
mappningen pådevelopment
tillåter inte inställningenmode
mappning tillproduction
att åsidosätta befintliga klusterdefinitioner som anges i den relaterade paketkonfigurationsfilen, till exempel med hjälp--compute-id <cluster-id>
av alternativet eller mappningencompute_id
.
Anpassade förinställningar
Databricks Asset Bundles stöder konfigurerbara förinställningar för mål, vilket gör att du kan anpassa beteendet för mål. Tillgängliga förinställningar visas i följande tabell:
Förinställning | beskrivning |
---|---|
name_prefix |
Prefixsträngen som ska förberedas för resursnamn. |
pipelines_development |
Om pipelinen är i utvecklingsläge eller inte. Giltiga värden är true eller false . |
trigger_pause_status |
En pausstatus som ska tillämpas på alla utlösare och scheman. Giltiga värden är PAUSED eller UNPAUSED . |
jobs_max_concurrent_runs |
Antalet maximala tillåtna samtidiga körningar för jobb. |
tags |
En uppsättning key:value-taggar som gäller för alla resurser som stöder taggar, som innehåller jobb och experiment. Databricks-tillgångspaket stöder inte taggar för resursen schema . |
source_linked_deployment |
Reserverad för framtida användning. Om resurser som skapats under distribution pekar på källfilerna i arbetsytan istället för på deras kopior i arbetsytan. |
Kommentar
Om både mode
och presets
anges åsidosätter förinställningar standardlägets beteende och inställningarna för enskilda resurser åsidosätter förinställningarna. Om ett schema till exempel är inställt på UNPAUSED
, men förinställningen trigger_pause_status
är inställd på PAUSED
, är schemat inte pausat.
I följande exempel visas en konfiguration av anpassade förinställningar för målet med namnet dev
:
targets:
dev:
presets:
name_prefix: "testing_" # prefix all resource names with testing_
pipelines_development: true # set development to true for pipelines
trigger_pause_status: PAUSED # set pause_status to PAUSED for all triggers and schedules
jobs_max_concurrent_runs: 10 # set max_concurrent runs to 10 for all jobs
tags:
department: finance