Convertire una pipeline Delta Live Tables in un progetto Databricks Asset Bundle
Questo articolo illustra come convertire una pipeline DLT (Delta Live Tables) esistente in un progetto di bundle. I bundle consentono di definire e gestire la configurazione dell'elaborazione dati di Azure Databricks in un singolo file YAML controllato dal codice sorgente che offre una manutenzione più semplice e consente la distribuzione automatica negli ambienti di destinazione.
Panoramica del processo di conversione
I passaggi da eseguire per convertire una pipeline esistente in un bundle sono:
- Assicurati di avere accesso a una pipeline configurata in precedenza che vuoi convertire in un bundle.
- Creare o preparare una cartella (preferibilmente in una gerarchia controllata dall'origine) per archiviare il bundle.
- Generare una configurazione per il bundle dalla pipeline esistente usando l'interfaccia della riga di comando di Azure Databricks.
- Esaminare la configurazione del bundle generato per assicurarsi che sia completata.
- Collegare il bundle alla pipeline originale.
- Distribuire la pipeline in un'area di lavoro di destinazione usando la configurazione del bundle.
Requisiti
Prima di iniziare, è necessario disporre di:
- L'interfaccia della riga di comando di Databricks installata nel computer di sviluppo locale. Per utilizzare i pacchetti di asset di Databricks, è necessaria la CLI di Databricks versione 0.218.0 o successiva.
- ID di una pipeline DLT esistente che verrà gestita con un bundle. Per informazioni su come ottenere questo ID, vedere Ottenere una definizione di pipeline esistente usando l'interfaccia utente.
- Autorizzazione per l'area di lavoro di Azure Databricks in cui viene eseguita la pipeline DLT esistente. Per configurare l'autenticazione e l'autorizzazione per le chiamate all'interfaccia della riga di comando di Azure Databricks, vedere Autorizzare l'accesso alle risorse di Azure Databricks.
Passaggio 1: Configurare una cartella per il progetto bundle
È necessario avere accesso a un repository Git configurato in Azure Databricks come cartella Git. Verrà creato il progetto bundle in questo repository, che applicherà il controllo del codice sorgente e lo renderà disponibile ad altri collaboratori tramite una cartella Git nell'area di lavoro di Azure Databricks corrispondente. Per altre informazioni sulle cartelle Git, vedere l'integrazione Git per le cartelle Git di Databricks.
Vai alla radice del repository Git clonato sulla tua macchina locale.
In una posizione appropriata nella gerarchia di cartelle, creare una cartella specifica per il progetto bundle. Per esempio:
mkdir - p ~/source/my-pipelines/ingestion/events/my-bundle
Cambia la directory di lavoro corrente in questa nuova cartella. Per esempio:
cd ~/source/my-pipelines/ingestion/events/my-bundle
Inizializzare un nuovo bundle eseguendo
databricks bundle init
e rispondendo alle richieste. Al termine, si avrà un file di configurazione del progetto denominatodatabricks.yml
nella nuova cartella home per il progetto. Questo file è necessario per distribuire la pipeline dalla riga di comando. Per altri dettagli su questo file di configurazione, vedere configurazione del bundle di asset di Databricks.
Passaggio 2: Generare la configurazione della pipeline
Da questa nuova directory nell'albero delle cartelle del repository Git clonato, esegui il comando della CLI di Azure Databricks seguente e specifica l'ID della pipeline DLT come <pipeline-id>
:
databricks bundle generate pipeline --existing-pipeline-id <pipeline-id> --profile <profile-name>
Quando si esegue il comando generate
, viene creato un file di configurazione del bundle per la pipeline nella cartella resources
del bundle e scarica tutti gli artefatti a cui si fa riferimento nella cartella src
. Il --profile
(o flag di -p
) è facoltativo, ma se si dispone di un profilo di configurazione di Databricks specifico (definito nel file di .databrickscfg
creato quando è stata installata l'interfaccia della riga di comando di Azure Databricks) che si preferisce usare anziché il profilo predefinito, specificarlo in questo comando. Per informazioni sui profili di configurazione di Databricks, vedere profili di configurazione di Azure Databricks.
Passaggio 3: Esaminare i file di progetto bundle
Al termine del comando bundle generate
, verranno create due nuove cartelle:
-
resources
è la sottodirectory del progetto che contiene i file di configurazione del progetto. -
src
è la cartella del progetto in cui vengono archiviati i file di origine, ad esempio query e notebook.
Il comando crea anche alcuni file aggiuntivi:
-
*.pipeline.yml
nella sottodirectoryresources
. Questo file contiene la configurazione e le impostazioni specifiche per la pipeline DLT. - File di origine, ad esempio query SQL nella sottodirectory
src
, copiati dalla pipeline DLT esistente.
├── databricks.yml # Project configuration file created with the bundle init command
├── resources/
│ └── {your-pipeline-name.pipeline}.yml # Pipeline configuration
└── src/
└── {SQl-query-retrieved-from-your-existing-pipeline}.sql # Your pipeline's declarative query
Passaggio 4: Associare la pipeline del bundle alla pipeline esistente
È necessario collegare o associare, la definizione della pipeline nel bundle alla pipeline esistente per mantenerla aggiornata man mano che si apportano modifiche. Per farlo, eseguire il seguente comando dell'interfaccia della riga di comando di Azure Databricks:
databricks bundle deployment bind <pipeline-name> <pipeline-ID> --profile <profile-name>
<pipeline-name>
è il nome della pipeline. Questo nome deve corrispondere alla stringa del nome file con prefisso per la configurazione della pipeline nella nuova directory resources
. Ad esempio, se si dispone di un file di configurazione della pipeline denominato ingestion_data_pipeline.pipeline.yml
nella cartella resources
, è necessario specificare ingestion_data_pipeline
come nome della pipeline.
<pipeline-ID>
è l'ID della pipeline. È lo stesso di quello che hai copiato come requisito per queste istruzioni.
Passaggio 5: Distribuisci la pipeline usando il nuovo bundle
Ora, distribuisci il bundle della pipeline nell'area di lavoro di destinazione usando il comando della CLI di Azure Databricks bundle deploy
.
databricks bundle deploy --target <target-name> --profile <profile-name>
Il flag --target
è obbligatorio e deve essere impostato su una stringa corrispondente a un nome dell'area di lavoro di destinazione configurato, ad esempio development
o production
.
Se questo comando ha esito positivo, è ora disponibile la configurazione della pipeline DLT in un progetto esterno che può essere caricato in altre aree di lavoro ed eseguito e condiviso facilmente con altri utenti di Azure Databricks nell'account.
Risoluzione dei problemi
Questione | Soluzione |
---|---|
Errore "databricks.yml non trovato" durante l'esecuzione di bundle generate |
Attualmente, il comando bundle generate non crea automaticamente il file di configurazione del bundle (databricks.yml ). È necessario creare il file usando databricks bundle init o manualmente. |
Le impostazioni della pipeline esistenti non corrispondono ai valori nella configurazione YAML della pipeline generata | L'ID della pipeline non viene visualizzato nel file YML di configurazione del bundle. Se si notano altre impostazioni mancanti, è possibile applicarle manualmente. |
Suggerimenti per il successo
- Usare sempre il controllo della versione. Se non si utilizzano le cartelle Git di Databricks, archiviare le sottodirectory e i file del progetto in un repository Git o in un altro sistema di controllo di versione.
- Testare la pipeline in un ambiente non di produzione ( ad esempio un ambiente di "sviluppo" o "test") prima di distribuirlo in un ambiente di produzione. È facile introdurre una configurazione errata per caso.
Risorse aggiuntive
Per altre informazioni sull'uso di bundle per definire e gestire l'elaborazione dei dati, vedere:
- Che cosa sono i bundle di asset di Databricks?
- Sviluppare pipeline di tabelle live Delta con bundle di asset di Databricks. Questo argomento illustra la creazione di un bundle per una nuova pipeline invece di quella esistente, con un notebook controllato dal codice sorgente per l'elaborazione fornita.