Condividi tramite


Modalità di distribuzione del bundle di asset di Databricks

Questo articolo descrive la sintassi per le modalità di distribuzione del bundle di asset di Databricks. I bundle consentono di gestire i flussi di lavoro di Azure Databricks a livello di codice. Vedere Che cosa sono i bundle di asset di Databricks?

Nei flussi di lavoro CI/CD, gli sviluppatori in genere codificano, testano, distribuiscono ed eseguono soluzioni in varie fasi o modalità. Ad esempio, il set di modalità più semplice include una modalità di sviluppo per la convalida pre-produzione, seguita da una modalità di di produzione per i risultati finali convalidati. Databricks Asset Bundles fornisce una raccolta facoltativa di comportamenti predefiniti che corrispondono a ognuna di queste modalità. Per usare questi comportamenti per una destinazione specifica, impostare un mode o configurare presets per una destinazione nel mapping di configurazione targets. Per informazioni su targets, vedere Mapping delle destinazioni di configurazione del bundle.

Modalità di sviluppo

Per distribuire il bundle in modalità di sviluppo, è prima necessario aggiungere il mapping mode, impostato su development, nella destinazione desiderata. Ad esempio, questa destinazione denominata dev viene considerata come destinazione di sviluppo:

targets:
  dev:
    mode: development

La distribuzione di una destinazione in modalità di sviluppo eseguendo il databricks bundle deploy -t <target-name> comando implementa i comportamenti seguenti, che possono essere personalizzati usando i set di impostazioni:

  • Antepone tutte le risorse non distribuite come file o notebook con il prefisso [dev ${workspace.current_user.short_name}] e contrassegna ogni processo e pipeline distribuiti con un dev tag Azure Databricks.
  • Contrassegna tutte le pipeline Delta Live Tables distribuite correlate come development: true.
  • Abilita l'uso di nelle chiamate correlate al --compute-id <cluster-id> comando , che esegue l'override di bundle deploy tutte le definizioni di cluster esistenti già specificate nel file di configurazione del bundle correlato. Anziché usare --compute-id <cluster-id> nelle chiamate correlate al comando bundle deploy, è possibile impostare il mapping compute_id qui o come mapping figlio del mapping bundle, sull'ID del cluster da usare.
  • Sospende tutte le pianificazioni e i trigger sulle risorse distribuite, ad esempio processi o monitoraggi qualitativi. Annullare l'uso di pianificazioni e trigger per un singolo processo impostando schedule.pause_status su UNPAUSED.
  • Abilita le esecuzioni simultanee in tutti i processi distribuiti per un'iterazione più rapida. Disabilitare le esecuzioni simultanee per un singolo processo impostando max_concurrent_runs su 1.
  • Disabilita il blocco di distribuzione per un'iterazione più veloce. Questo blocco impedisce conflitti di distribuzione che potrebbero verificarsi in modalità di sviluppo. Riabilitare il blocco impostando bundle.deployment.lock.enabled su true.

Modalità di produzione

Per distribuire il bundle in modalità di produzione, devi innanzitutto aggiungere il mapping mode, impostato su production, sulla destinazione desiderata. Ad esempio, questa destinazione denominata prod viene considerata come destinazione di produzione:

targets:
  prod:
    mode: production

La distribuzione di una destinazione in modalità di produzione eseguendo il databricks bundle deploy -t <target-name> comando implementa i comportamenti seguenti:

  • Verifica che tutte le pipeline distribuite Delta Live Tables correlate siano contrassegnate come development: false.

  • Verifica che il ramo Git corrente sia uguale al ramo Git specificato nella destinazione. La specifica di un ramo Git nella destinazione è facoltativa e può essere eseguita con una proprietà aggiuntiva git come indicato di seguito:

    git:
      branch: main
    

    Questa convalida può essere sottoposta a override specificando --force durante la distribuzione.

  • Databricks consiglia di usare le entità servizio per le distribuzioni di produzione. È possibile applicare questa impostazione impostando run_as su un'entità servizio. Vedere Gestire le entità servizio e Specificare un'identità di esecuzione per un flusso di lavoro dei bundle di asset di Databricks. Se non si usano entità servizio, tenere presenti i comportamenti aggiuntivi seguenti:

    • Verifica che artifact_pathi mapping , file_path, root_patho state_path non vengano sottoposti a override a un utente specifico.
    • Verifica che i run_as mapping e permissions siano specificati per chiarire quali identità dispongono di autorizzazioni specifiche per le distribuzioni.
  • A differenza del comportamento precedente per impostare il mode mapping su development, l'impostazione del mode mapping su production non consente l'override di eventuali definizioni di cluster esistenti specificate nel file di configurazione del bundle correlato, ad esempio usando l'opzione --compute-id <cluster-id> o il compute_id mapping.

Set di impostazioni personalizzati

I bundle di asset di Databricks supportano set di impostazioni configurabili per le destinazioni, che consentono di personalizzare i comportamenti per le destinazioni. I set di impostazioni disponibili sono elencati nella tabella seguente:

Preset Descrizione
name_prefix Stringa di prefisso da anteporre ai nomi delle risorse.
pipelines_development Indica se la pipeline è in modalità di sviluppo. I valori validi sono true o false.
trigger_pause_status Stato di pausa da applicare a tutti i trigger e le pianificazioni. I valori validi sono PAUSED o UNPAUSED.
jobs_max_concurrent_runs Numero massimo di esecuzioni simultanee consentite per i processi.
tags Insieme di tag chiave:valore che si applicano a tutte le risorse che supportano i tag, inclusi processi ed esperimenti. I bundle di asset di Databricks non supportano i tag per la schema risorsa.
source_linked_deployment Riservato per uso futuro. Indica se le risorse create durante la distribuzione puntano ai file di origine nell'area di lavoro anziché alle loro copie nell'area di lavoro.

Nota

Se vengono impostati sia mode che presets, i set di impostazioni sostituiscono il comportamento della modalità predefinita e le impostazioni delle singole risorse sostituiscono i set di impostazioni. Ad esempio, se una pianificazione è impostata su UNPAUSED, ma il preset trigger_pause_status è impostato su PAUSED, la pianificazione è riattivata.

L'esempio seguente mostra una configurazione predefinita personalizzata per la destinazione denominata 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