Condividi tramite


Configurare gli intervalli di trigger di Structured Streaming

Questo articolo illustra come configurare gli intervalli di trigger per lo streaming strutturato in Azure Databricks.

Apache Spark Structured Streaming elabora i dati in modo incrementale. Gli intervalli di trigger controllano la frequenza con cui Structured Streaming controlla la presenza di nuovi dati. È possibile configurare gli intervalli di trigger per l'elaborazione quasi in tempo reale, per gli aggiornamenti pianificati del database o l'elaborazione batch di tutti i nuovi dati per un giorno o una settimana.

Poiché Che cos'è il caricatore automatico? usa Structured Streaming per caricare i dati, comprendere il funzionamento dei trigger offre la massima flessibilità per controllare i costi durante l'inserimento dei dati con la frequenza desiderata.

Panoramica delle modalità di attivazione

La tabella seguente riepiloga le modalità di trigger disponibili in Structured Streaming:

Modalità trigger Esempio di sintassi (Python) Ideale per
Non specificato (impostazione predefinita) N/A Streaming per utilizzo generico con latenza di 3-5 secondi. Equivalente al trigger "processingTime" con intervalli di 0 ms. L'elaborazione del flusso viene eseguita continuamente finché arrivano nuovi dati.
Tempo di elaborazione .trigger(processingTime='10 seconds') Bilanciamento dei costi e delle prestazioni. Riduce il sovraccarico impedendo al sistema di controllare i dati troppo frequentemente.
Disponibile ora .trigger(availableNow=True) Elaborazione batch incrementale pianificata. Elabora la quantità di dati disponibile al momento dell'attivazione del processo di streaming.
Modalità in tempo reale .trigger(realTime='5 minutes') Carichi di lavoro operativi a latenza ultra bassa che richiedono un'elaborazione inferiore al secondo, come il rilevamento delle frodi o la personalizzazione in tempo reale. Anteprima pubblica. "5 minuti" indica la lunghezza di un micro batch. Usare 5 minuti per ridurre al minimo il sovraccarico per batch, ad esempio la compilazione di query.
Continuo .trigger(continuous='1 second') Non supportato. Questa è una funzionalità sperimentale inclusa in Spark OSS. Usare invece la modalità in tempo reale.

processingTime: intervalli di attivazione basati sul tempo

Structured Streaming si riferisce agli intervalli di trigger basati sul tempo come "micro batch a intervalli fissi". Usando la processingTime parola chiave , specificare una durata di tempo come stringa, ad esempio .trigger(processingTime='10 seconds').

La configurazione di questo intervallo determina la frequenza con cui il sistema esegue controlli per verificare se sono arrivati nuovi dati. Configurare il tempo di elaborazione per bilanciare i requisiti di latenza e la frequenza di arrivo dei dati nell'origine.

AvailableNow: elaborazione batch incrementale

Importante

In Databricks Runtime 11.3 LTS e versioni successive Trigger.Once è deprecato. Usare Trigger.AvailableNow per tutti i carichi di lavoro di elaborazione batch incrementali.

L'opzione AvailableNow trigger utilizza tutti i record disponibili come batch incrementale con la possibilità di configurare le dimensioni del batch con opzioni come maxBytesPerTrigger. Le opzioni di ridimensionamento variano in base all'origine dati.

Origini dati supportate

Azure Databricks supporta l'uso di Trigger.AvailableNow per l'elaborazione batch incrementale da molte origini Structured Streaming. La tabella seguente include la versione minima supportata di Databricks Runtime necessaria per ogni origine dati.

Origine Versione minima di Databricks Runtime
Origini file (JSON, Parquet e così via) 9.1 LTS
Delta Lake 10,4 LTS
Caricatore Automatico 10,4 LTS
Apache Kafka 10,4 LTS
Kinesis 13.1

realTime: carichi di lavoro operativi a latenza ultra bassa

Importante

Questa funzionalità è in Anteprima Pubblica.

La modalità in tempo reale per Structured Streaming raggiunge una latenza end-to-end inferiore a 1 secondo alla coda e in casi comuni intorno a 300 ms. Per altre informazioni su come configurare e usare in modo efficace la modalità in tempo reale, vedere Modalità in tempo reale in Structured Streaming.

Apache Spark ha un intervallo di trigger aggiuntivo noto come Elaborazione continua. Questa modalità è stata classificata come sperimentale a partire da Spark 2.3. Azure Databricks non supporta o consiglia questa modalità. Usare invece la modalità in tempo reale per i casi d'uso a bassa latenza.

Nota

La modalità di elaborazione continua in questa pagina non è correlata all'elaborazione continua nelle pipeline dichiarative di Lakeflow Spark.

Modificare gli intervalli di trigger tra le esecuzioni

È possibile modificare l'intervallo di trigger tra le esecuzioni usando lo stesso checkpoint.

Comportamento durante la modifica degli intervalli

Se un processo Structured Streaming si arresta durante l'elaborazione di un micro batch, tale micro batch deve essere completato prima dell'applicazione del nuovo intervallo di trigger. Di conseguenza, è possibile osservare un'elaborazione micro batch con le impostazioni specificate in precedenza dopo la modifica dell'intervallo di trigger. Di seguito viene descritto il comportamento previsto durante la transizione:

  • Transizione dall'intervallo basato sul tempo a AvailableNow: un micro-batch potrebbe elaborare in anticipo rispetto all'elaborazione di tutti i record disponibili come batch incrementale.

  • Transizione da AvailableNow a intervallo basato sul tempo: l'elaborazione potrebbe continuare per tutti i record disponibili quando è stato attivato l'ultimo AvailableNow processo. Si tratta di un comportamento previsto.

Ripristino degli errori di query

Nota

Se si sta tentando di eseguire il ripristino da un errore di query associato a un batch incrementale, la modifica dell'intervallo di trigger non risolve questo problema perché il batch deve ancora essere completato. Aumentare la capacità di calcolo usata per elaborare il batch per provare a risolvere il problema. In rari casi, potrebbe essere necessario riavviare il flusso con un nuovo checkpoint.