Implementatiemodi voor Databricks Asset Bundle
In dit artikel worden de syntaxis voor implementatiemodi van Databricks Asset Bundle beschreven. Bundels maken programmatisch beheer van Azure Databricks-werkstromen mogelijk. Zie Wat zijn Databricks-assetbundels?
In CI/CD-werkstromen coden, testen, implementeren en uitvoeren ontwikkelaars doorgaans oplossingen in verschillende fasen of modi. De eenvoudigste set modi bevat bijvoorbeeld een ontwikkelingsmodus voor preproductievalidatie, gevolgd door een productiemodus voor gevalideerde producten. Databricks Asset Bundles biedt een optionele verzameling standaardgedrag dat overeenkomt met elk van deze modi. Als u dit gedrag voor een specifiek doel wilt gebruiken, stelt u een mode
of configureert u presets
voor een doel in de targets
configuratietoewijzing in. Zie de toewijzing van bundelconfiguratiedoelen voor meer informatie.targets
Ontwikkelingsmodus
Als u uw bundel wilt implementeren in de ontwikkelingsmodus, moet u eerst de mode
toewijzing toevoegen, ingesteld op development
, op het beoogde doel. Dit doel met de naam dev
wordt bijvoorbeeld behandeld als een ontwikkelingsdoel:
targets:
dev:
mode: development
Het implementeren van een doel in de ontwikkelingsmodus door de databricks bundle deploy -t <target-name>
opdracht uit te voeren implementeert het volgende gedrag, dat kan worden aangepast met behulp van voorinstellingen:
- Hiermee worden alle resources die niet zijn geïmplementeerd als bestanden of notebooks voorafgegaan door het voorvoegsel
[dev ${workspace.current_user.short_name}]
en tags voor elke geïmplementeerde taak en pijplijn met eendev
Azure Databricks-tag. - Markeert alle gerelateerde geïmplementeerde Delta Live Tables-pijplijnen als
development: true
. Zie De ontwikkelmodus gebruiken om pijplijnupdates uit te voeren. - Hiermee kunt u het gebruik van
--compute-id <cluster-id>
gerelateerde aanroepen naar debundle deploy
opdracht inschakelen, waardoor alle bestaande clusterdefinities worden overschreven die al zijn opgegeven in het gerelateerde bundelconfiguratiebestand. In plaats van in gerelateerde aanroepen naar debundle deploy
opdracht te gebruiken--compute-id <cluster-id>
, kunt u decompute_id
toewijzing hier instellen, of als onderliggende toewijzing van debundle
toewijzing, naar de id van het cluster dat moet worden gebruikt. - Onderbreekt alle planningen en triggers voor geïmplementeerde resources, zoals taken of kwaliteitsmonitors. Maak planningen en triggers voor een afzonderlijke taak ongedaan door in te stellen
schedule.pause_status
opUNPAUSED
. - Maakt gelijktijdige uitvoeringen voor alle geïmplementeerde taken mogelijk voor snellere iteratie. Schakel gelijktijdige uitvoeringen voor een afzonderlijke taak uit door in te stellen
max_concurrent_runs
op1
. - Hiermee wordt de implementatievergrendeling uitgeschakeld voor snellere iteratie. Deze vergrendeling voorkomt implementatieconflicten die waarschijnlijk niet voorkomen in de ontwikkelmodus. Schakel de vergrendeling opnieuw in door in te stellen
bundle.deployment.lock.enabled
optrue
.
Productiemodus
Als u uw bundel wilt implementeren in de productiemodus, moet u eerst de mode
toewijzing toevoegen, ingesteld op production
, op het beoogde doel. Dit doel met de naam prod
wordt bijvoorbeeld behandeld als een productiedoel:
targets:
prod:
mode: production
Het implementeren van een doel in de productiemodus door de databricks bundle deploy -t <target-name>
opdracht uit te voeren, implementeert het volgende gedrag:
Valideert of alle gerelateerde geïmplementeerde Delta Live Tables-pijplijnen zijn gemarkeerd als
development: false
.Valideert of de huidige Git-vertakking gelijk is aan de Git-vertakking die is opgegeven in het doel. Het opgeven van een Git-vertakking in het doel is optioneel en kan als volgt worden uitgevoerd met een extra
git
eigenschap:git: branch: main
Deze validatie kan worden overschreven door op te
--force
geven tijdens de implementatie.Databricks raadt u aan om service-principals te gebruiken voor productie-implementaties. U kunt dit afdwingen door deze in te stellen
run_as
op een service-principal. Zie Service-principals beheren en Een uitvoeringsidentiteit opgeven voor een Databricks Asset Bundles-werkstroom. Als u geen service-principals gebruikt, moet u rekening houden met het volgende aanvullende gedrag:- Valideert of
artifact_path
file_path
root_path
state_path
toewijzingen niet worden overschreven voor een specifieke gebruiker. - Valideert dat de
run_as
enpermissions
toewijzingen zijn opgegeven om te verduidelijken welke identiteiten specifieke machtigingen hebben voor implementaties.
- Valideert of
In tegenstelling tot het voorgaande gedrag voor het instellen van de
mode
toewijzingdevelopment
, staat het instellen van demode
toewijzing aanproduction
geen bestaande clusterdefinities toe die zijn opgegeven in het gerelateerde bundelconfiguratiebestand, bijvoorbeeld met behulp van de--compute-id <cluster-id>
optie of decompute_id
toewijzing.
Aangepaste voorinstellingen
Databricks Asset Bundles ondersteunt configureerbare voorinstellingen voor doelen, waarmee u het gedrag voor doelen kunt aanpassen. De beschikbare voorinstellingen worden weergegeven in de volgende tabel:
Voorinstelling | Beschrijving |
---|---|
name_prefix |
De tekenreeks voor het voorvoegsel die moet worden voorafgegaan door resourcenamen. |
pipelines_development |
Of de pijplijn al dan niet in de ontwikkelingsmodus staat. Geldige waarden zijn true of false . |
trigger_pause_status |
Een onderbrekingsstatus die moet worden toegepast op alle triggers en planningen. Geldige waarden zijn PAUSED of UNPAUSED . |
jobs_max_concurrent_runs |
Het aantal maximaal toegestane gelijktijdige uitvoeringen voor taken. |
tags |
Een set sleutel-waardetags die van toepassing zijn op alle resources die tags ondersteunen, waaronder taken en experimenten. Databricks Asset Bundles biedt geen ondersteuning voor tags voor de schema resource. |
Notitie
Als beide mode
en presets
zijn ingesteld, overschrijven voorinstellingen het standaardgedrag van de modus en de instellingen van afzonderlijke resources de voorinstellingen. Als een schema bijvoorbeeld is ingesteld op UNPAUSED
, maar de trigger_pause_status
voorinstelling is ingesteld PAUSED
op , wordt het schema niet gebruikt.
In het volgende voorbeeld ziet u een aangepaste configuratie van vooraf ingestelde instellingen voor het doel met de naam 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