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 ontwikkeling modus voor preproductievalidatie, gevolgd door een productie modus 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
in of configureert u presets
voor een doel in de targets
configuratietoewijzing. Voor informatie over targets
, zie toewijzing van bundelconfiguratiedoelen.
Ontwikkelingsmodus
Als u uw bundel wilt implementeren in de ontwikkelingsmodus, moet u eerst de mode
-toewijzing toevoegen, ingesteld op development
, aan 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 als bestanden of notebooks zijn geïmplementeerd, voorafgegaan door het voorvoegsel
[dev ${workspace.current_user.short_name}]
en worden alle geïmplementeerde taken en pijplijnen voorzien van eendev
Azure Databricks-tag. - Markeert alle gerelateerde geïmplementeerde DLT-pijplijnen als
development: true
. - Hiermee kan het gebruik van
--compute-id <cluster-id>
in gerelateerde oproepen naar hetbundle deploy
commando worden ingeschakeld, die alle bestaande clusterdefinities overschrijft die al zijn gespecificeerd in het gerelateerde bundelconfiguratiebestand. In plaats van--compute-id <cluster-id>
te gebruiken in gerelateerde aanroepen naar de opdrachtbundle deploy
, kunt u decompute_id
-toewijzing hier instellen, of als onderliggende toewijzing van debundle
-toewijzing, naar de ID van het te gebruiken cluster. - 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
, aan 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 DLT-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
--force
te specificeren tijdens de implementatie.Databricks raadt u aan om service-principals te gebruiken voor productie-implementaties. U kunt dit afdwingen door
run_as
in te stellen op een service-principal. Zie Beheer van service-principals en Specificeren van een uitvoeringsidentiteit 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
, ofstate_path
toewijzingen niet worden overschreven voor een specifieke gebruiker. - Valideert of de
run_as
- enpermissions
-toewijzingen zijn gespecificeerd om te verduidelijken welke identiteiten specifieke machtigingen hebben voor implementaties.
- Valideert of
In tegenstelling tot het voorgaande gedrag voor het instellen van de
mode
toewijzing naardevelopment
, staat het instellen van demode
toewijzing naarproduction
niet toe dat bestaande clusterdefinities worden overschreven, zoals gespecificeerd 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 voorvoegseltekenreeks die moet worden toegevoegd aan 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. |
source_linked_deployment |
Gereserveerd voor toekomstig gebruik. Of de tijdens implementatie gemaakte bronnen verwijzen naar bronbestanden in de werkruimte in plaats van naar hun kopieën in de werkruimte. |
Notitie
Als zowel mode
als presets
zijn ingesteld, overschrijven voorinstellingen het standaardgedrag van de modus en overschrijven instellingen van afzonderlijke resources de voorinstellingen. Als een schema bijvoorbeeld is ingesteld op UNPAUSED
, maar de vooraf ingestelde trigger_pause_status
op PAUSED
staat, is het schema niet gepauzeerd.
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