Condividi tramite


Pianificare e orchestrare i flussi di lavoro

I flussi di lavoro di Databricks offrono una raccolta 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 relativi alla gestione dei carichi di lavoro di produzione tramite processi di Databricks.

Nota

Le Delta Live Tables forniscono una sintassi dichiarativa per la creazione di pipeline di elaborazione dati. Vedere Che cos'è Delta Live Tables?.

Che cosa sono i processi di Databricks?

Un processo di Databricks consente di configurare le attività da eseguire in un ambiente di calcolo specificato in base a una pianificazione specificata. Insieme alle pipeline Delta Live Tables, i processi sono lo strumento principale usato in Azure Databricks per distribuire l'elaborazione dei dati e la logica di Machine Learning nell'ambiente di produzione.

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. È possibile riparare ed eseguire di nuovo un processo non riuscito o annullato usando l'interfaccia utente o l'API. È 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).

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 che contiene la logica da eseguire.
  • Risorsa di calcolo per eseguire la logica. La risorsa di calcolo può essere serverless, classico o multifunzionale. Si veda Usare il calcolo di Azure Databricks con i processi.
  • Una pianificazione specificata per quando il processo deve essere eseguito o per un trigger manuale.
  • 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 in 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 Condividere informazioni tra attività in un processo di Azure Databricks.

Quali opzioni del flusso di controllo sono disponibili per i processi?

Quando si configurano processi e attività all'interno dei processi, è possibile personalizzare le impostazioni che controllano l'esecuzione dell'intero processo e delle singole attività.

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 umano 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 Attivare i processi quando arrivano nuovi file.

Nuovi tentativi

I tentativi specificano quante volte deve essere eseguito nuovamente un processo o un'attività specifica nel caso in cui il processo abbia esito negativo e venga visualizzato un messaggio di errore. Gli errori sono spesso temporanei e risolti tramite il riavvio e 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.

Un'opzione per la configurazione dei tentativi viene visualizzata nell'interfaccia utente per i contesti supportati. Di seguito sono elencate le quattro opzioni disponibili.

  • È possibile specificare nuovi tentativi per un intero processo, ovvero l'intero processo viene riavviato in caso di errore di un'attività.
  • È possibile specificare nuovi tentativi per un'attività, nel qual caso l'attività viene riavviata fino al numero specificato di volte in caso di errore.

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 Eseguire attività in modo condizionale in un processo di Azure Databricks

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à condizione If/else.

I processi supportano taskValues che si definisce all'interno della 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:

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 di 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 bloccato.
  • È necessario avvisare un tecnico se viene superato un contratto di servizio per un flusso di lavoro.
  • Si vuole far fallire un processo configurato con un cluster di grandi dimensioni per evitare costi imprevisti.

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 Configurare le esecuzioni simultanee massime.

Come è possibile monitorare i processi?

È 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 è 1000. 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:

Per altre informazioni sugli strumenti di sviluppo, si veda Strumenti di sviluppo e materiale sussidiario.

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.

Per informazioni su come eseguire un processo usando l'attività Web di ADF, incluso come eseguire l'autenticazione ad Azure Databricks da ADF, vedere Sfruttare l'orchestrazione dei processi di Azure Databricks da Azure Data Factory.

ADF offre anche il 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.