Pianificare e orchestrare i flussi di lavoro
I flussi di lavoro di Databricks dispongono di strumenti che consentono di pianificare e orchestrare le attività di elaborazione dei dati in Azure Databricks. I flussi di lavoro di Databricks vengono usati per configurare i processi di Databricks.
Questo articolo presenta i concetti e le opzioni relative alla gestione dei carichi di lavoro di produzione tramite processi di Databricks.
Che cosa sono i processi di Databricks?
Un processo è l'unità primaria per la pianificazione e l'orchestrazione dei carichi di lavoro di produzione in Azure Databricks. I processi sono costituiti da una o più attività. Insieme, le attività e i processi consentono di configurare e distribuire quanto segue:
- Logica personalizzata, tra cui Spark, SQL, OSS Python, ML e codice arbitrario.
- Risorse di calcolo con ambienti e librerie personalizzati.
- Pianificazioni e trigger per l'esecuzione dei carichi di lavoro.
- Logica condizionale per il flusso di controllo tra le attività.
I processi offrono un approccio procedurale alla definizione delle relazioni tra le attività. Le pipeline Delta Live Tables offrono un approccio dichiarativo per definire le relazioni tra set di dati e trasformazioni. È possibile includere pipeline Delta Live Tables come attività in un processo. Vedere Attività pipeline Delta Live Tables per i processi.
I processi possono variare in complessità da una singola attività che esegue un notebook di Databricks a migliaia di attività in esecuzione con logica condizionale e dipendenze.
Come è possibile configurare ed eseguire processi?
È possibile creare ed eseguire un processo usando l'interfaccia utente Processi, l'interfaccia della riga di comando o richiamando l'API Processi. Tramite l’interfaccia utente o l’API, è possibile riparare ed eseguire di nuovo un processo non riuscito o annullato. È possibile monitorare i risultati dell'esecuzione dei processi usando l'interfaccia utente, l'interfaccia della riga di comando, l'API e le notifiche (ad esempio, posta elettronica, destinazione webhook o notifiche Slack).
Se si preferisce un approccio IaC (Infrastructure-as-Code) alla configurazione e all'orchestrazione dei processi, usare i bundle di asset di Databricks (DAB). I bundle possono contenere definizioni YAML di processi e attività, vengono gestiti tramite l'interfaccia della riga di comando di Databricks e possono essere condivisi ed eseguiti in aree di lavoro di destinazione diverse, ad esempio sviluppo, gestione temporanea e produzione. Per informazioni sull'uso dei DAB per configurare e orchestrare i processi, vedere Bundle di asset di Databricks.
Per informazioni sull'uso dell'interfaccia della riga di comando di Databricks, vedere Informazioni sull'interfaccia della riga di comando di Databricks. Per informazioni sull'uso dell'API Processi, vedere l'API Processi.
Qual è la configurazione minima necessaria per un processo?
Tutti i processi in Azure Databricks richiedono quanto segue:
- Codice sorgente (ad esempio un notebook di Databricks) che contiene la logica da eseguire.
- Risorsa di calcolo per eseguire la logica. La risorsa di calcolo può essere serverless, classico o multifunzionale. Vedere Configurare il calcolo per i processi.
- Una pianificazione specificata per quando il processo deve essere eseguito. Facoltativamente, è possibile omettere l'impostazione di una pianificazione e attivare manualmente il processo.
- Un nome univoco.
Nota
Se si sviluppa il codice nei notebook di Databricks, è possibile usare il pulsante Pianifica per configurare il notebook come processo. Vedere Creare e gestire processi pianificati.
Cos'è un’attività?
Un'attività rappresenta un'unità di logica che viene eseguita come passaggio di un processo. Le attività possono variare in complessità e includere quanto segue:
- Un notebook
- Un file JAR
- Query SQL
- Una pipeline DLT
- Un altro processo
- Attività del flusso di controllo
È possibile controllare l'ordine di esecuzione delle attività specificando le dipendenze tra di esse. È possibile configurare le attività da eseguire in sequenza o in parallelo.
I processi interagiscono con le informazioni sullo stato e i metadati delle attività, ma l'ambito dell'attività è isolato. È possibile usare i valori delle attività per condividere il contesto tra le attività pianificate. Vedere Usare i valori delle attività per passare informazioni tra le attività.
Quali opzioni del flusso di controllo sono disponibili per i processi?
Quando si configurano processi e attività nei processi, è possibile personalizzare le impostazioni che controllano l'esecuzione dell'intero processo e delle singole attività. Queste opzioni sono:
- Trigger
- Nuovi tentativi
- Esegui se attività condizionali
- Attività condizionali if/else
- Per ogni attività
- Soglia di durata
- Impostazioni di concorrenza
Tipi di trigger
Quando si configura un processo, è necessario specificare un tipo di trigger. È possibile scegliere tra i seguenti tipi di trigger:
È anche possibile scegliere di attivare manualmente il processo, ma questa opzione è riservata principalmente a casi d'uso specifici, ad esempio:
- Si usa uno strumento di orchestrazione esterno per l'attivazione di processi tramite chiamate API REST.
- Si dispone di un processo che viene eseguito raramente e che richiede un intervento manuale per la convalida o la risoluzione dei problemi di qualità dei dati.
- Si esegue un carico di lavoro che deve essere eseguito una o alcune volte, ad esempio una migrazione.
Vedere Tipi di trigger per processi di Databricks.
Nuovi tentativi
I nuovi tentativi specificano quante volte deve essere eseguita nuovamente un'attività specifica nel caso in cui l’attività abbia esito negativo e venga visualizzato un messaggio di errore. Gli errori sono spesso temporanei e risolti tramite il riavvio. Alcune funzionalità in Azure Databricks, ad esempio l'evoluzione dello schema con Structured Streaming, presuppongono che vengano eseguiti processi con nuovi tentativi per reimpostare l'ambiente e consentire la continuazione di un flusso di lavoro.
Se si specificano nuovi tentativi per un'attività, l'attività viene riavviata fino al numero specificato di volte in caso di errore. Non tutte le configurazioni del processo supportano i nuovi tentativi per l’attività. Vedere Impostare un criterio di ripetizione.
Quando si esegue in modalità trigger continuo, Databricks esegue automaticamente nuovi tentativi con backoff esponenziale. Vedere Come vengono gestiti gli errori per i processi continui?
Esegui se attività condizionali
È possibile usare il tipo di attività Esegui se per specificare le condizioni per le attività successive in base al risultato di altre attività. Aggiungere attività al processo e specificare attività dipendenti da upstream. In base allo stato di tali attività, è possibile configurare una o più attività downstream da eseguire. I processi supportano le seguenti dipendenze:
- Tutte le operazioni riuscite
- Almeno una riuscita
- Nessuna non riuscita
- Operazione completata
- Almeno una non riuscita
- Tutte non riuscite
Vedere Configurare le dipendenze delle attività
Attività condizionali if/else
È possibile usare il tipo di attività If/else per specificare le condizionali in base ad alcuni valori. Vedere Aggiungere la logica di diramazione al processo con l'attività If/else.
I processi supportano taskValues
che si definisce nella logica e consentono di restituire i risultati di alcuni calcoli o stato da un'attività all'ambiente dei processi. È possibile definire le condizioni If/else in base a taskValues
, parametri di processo o valori dinamici.
Azure Databricks supporta gli operandi seguenti per le condizionali:
==
!=
>
>=
<
<=
Vedere anche:
- Usare i valori attività per passare informazioni tra le attività
- Che cos'è un valore dinamico di riferimento?
- Parametrizzare i processi
Per ogni attività
È possibile usare l'attività For each
per eseguire un'altra attività in un ciclo, passando un set diverso di parametri a ogni iterazione dell'attività.
L'aggiunta dell'attività For each
a un processo richiede la definizione di due attività: l'attività For each
e un'attività nidificata. L'attività nidificata è l'attività da eseguire per ogni iterazione dell'attività For each
ed è uno dei tipi di attività standard dei processi di Azure Databricks. Per passare parametri all'attività nidificata sono supportati più metodi.
Si veda Eseguire un'attività di processo di Azure Databricks con parametri in un ciclo.
Soglia di durata
È possibile specificare una soglia di durata per inviare un avviso o arrestare un'attività o un processo se viene superata una durata specificata. Seguono alcuni esempi di quando si potrebbe voler configurare questa impostazione:
- Si dispone di attività soggette a blocco in uno stato sospeso.
- È necessario avvisare un tecnico se viene superato un contratto di servizio per un flusso di lavoro.
- Per evitare costi imprevisti, si vuole far fallire un processo configurato con un cluster di grandi dimensioni.
Vedere Configurare un tempo di completamento previsto o un timeout per un processo e Configurare un tempo di completamento previsto o un timeout per un'attività.
Concorrenza
La maggior parte dei processi è configurata con la concorrenza predefinita di 1 processo simultaneo. Ciò significa che se un'esecuzione di processo precedente non è stata completata al momento dell'attivazione di un nuovo processo, l'esecuzione del processo successiva viene ignorata.
Esistono alcuni casi d'uso per aumentare la concorrenza, ma la maggior parte dei carichi di lavoro non richiede la modifica di questa impostazione.
Per altre informazioni sulla configurazione della concorrenza, vedere Impostazioni di accodamento e concorrenza dei processi di Databricks.
Come è possibile monitorare i processi?
L'interfaccia utente dei processi consente di visualizzare le esecuzioni dei processi, incluse le esecuzioni in corso. Vedere Monitoraggio e osservabilità per i processi di Databricks.
È possibile ricevere notifiche all'avvio, al completamento o all'esito negativo di un processo o di un'attività. È possibile inviare notifiche a uno o più indirizzi di posta elettronica o destinazioni di sistema. Vedere Aggiungere notifiche di posta elettronica e di sistema per gli eventi del processo
Le tabelle di sistema includono uno schema lakeflow
in cui è possibile visualizzare i record correlati all'attività del processo nell'account. Consultare Informazioni di riferimento sulla tabella di sistema processi.
È anche possibile unire le tabelle di sistema dei processi con le tabelle di fatturazione per monitorare il costo dei processi nell'account. Vedere Monitorare i costi dei processi con le tabelle di sistema.
Limiti
Esistono le limitazioni seguenti:
- In un'area di lavoro, il numero massimo di esecuzioni di attività simultanee è 2000. Una risposta
429 Too Many Requests
viene restituita quando si richiede un'esecuzione che non può iniziare immediatamente. - Il numero massimo di processi che un'area di lavoro può creare in un'ora è 10000 (inclusi “run submit”). Questo limite influisce anche sui processi creati dall'API REST e dai flussi di lavoro del notebook.
- Un'area di lavoro può contenere fino a 12000 processi salvati.
- Un processo può contenere fino a 100 attività.
È possibile gestire i flussi di lavoro a livello di codice?
Databricks offre strumenti e API che consentono di pianificare e orchestrare i flussi di lavoro a livello di codice, inclusi i seguenti:
- Interfaccia della riga di comando di Databricks
- Bundle di asset di Databricks
- Estensione Databricks per Visual Studio Code
- Databricks-sdk
- API REST dei processi
Per altre informazioni sugli strumenti di sviluppo, vedere Strumenti di sviluppo.
Orchestrazione del flusso di lavoro con Apache AirFlow
È possibile usare Apache Airflow per gestire e pianificare i flussi di lavoro dei dati. Con Airflow si definisce il flusso di lavoro in un file Python e Airflow gestisce la pianificazione e l'esecuzione del flusso di lavoro. Vedere Orchestrare i processi di Azure Databricks con Apache Airflow.
Orchestrazione flussi di lavoro di Azure Data Factory
Data Factory di Azure (ADF) è un servizio di integrazione dei dati nel cloud che consente di creare servizi di archiviazione, movimento ed elaborazione in pipeline di dati automatizzate. È possibile usare Azure Data Factory per orchestrare un processo di Azure Databricks come parte di una pipeline di Azure Data Factory.
ADF dispone anche del supporto predefinito per eseguire notebook di Databricks, script Python o codice incluso in file JAR in una pipeline di Azure Data Factory.
Per informazioni su come eseguire un notebook di Databricks in una pipeline di Azure Data Factory, vedere Eseguire un notebook di Databricks con l'attività notebook di Databricks in Azure Data Factory, seguita da Trasformare i dati eseguendo un notebook di Databricks.
Per informazioni su come eseguire uno script Python in una pipeline di Azure Data Factory, vedere Trasformare i dati eseguendo un'attività Python in Azure Databricks.
Per informazioni su come eseguire il codice incluso in un file JAR in una pipeline di Azure Data Factory, vedere Trasformare i dati eseguendo un'attività JAR in Azure Databricks.