Pipeline in modalità flusso

PCollections illimitati, o raccolte illimitate, rappresentano i dati nelle pipeline in modalità flusso. Un numero illimitato contiene dati provenienti da un'origine dati in continuo aggiornamento, come Pub/Sub

Non puoi utilizzare solo una chiave per raggruppare gli elementi di una raccolta illimitata. Potrebbero esserci essere un numero infinito di elementi per una determinata chiave nei flussi di dati perché i dati aggiunge costantemente nuovi elementi. Puoi utilizzare Windows, filigrane e attivatori per aggregare elementi in raccolte illimitate.

Il concetto di finestre si applica anche alle PCollection limitate che rappresentano i dati nelle pipeline batch. Per informazioni sul windowing nelle pipeline in modalità batch, consulta la documentazione di Apache Beam per Finestra con PCollection limitate.

Se una pipeline Dataflow ha un'origine dati limitata, ovvero un'origine che non contiene dati in continuo aggiornamento e la pipeline passa alla modalità flusso utilizzando il flag --streaming, quando l'origine limitata è completamente consumata, l'esecuzione della pipeline viene interrotta.

Usa modalità flusso di dati

Per eseguire una pipeline in modalità flusso di dati, imposta il flag --streaming nel riga di comando quando esegui la pipeline. Puoi anche impostare la modalità flusso di dati in modo programmatico quando crei la pipeline.

Le origini batch non sono supportate in modalità flusso di dati.

Quando aggiorni la pipeline con un pool di worker più grande, il job in flussi potrebbe non essere migliorato come previsto. Per i job di flussi di dati che non utilizzano Motore di flussi di dati non è possibile scalare oltre il numero originale di worker e Persistent Disk risorse allocate all'inizio del job originale. Quando aggiorna un il job Dataflow e specificare un numero maggiore di worker nel nuovo puoi specificare solo un numero di worker uguale al numero massimo di specificati per il lavoro originale.

Specifica il numero massimo di worker utilizzando i seguenti flag:

Java

--maxNumWorkers

Python

--max_num_workers

Vai

--max_num_workers

Funzioni di Windows e windowing

Le funzioni di windowing suddividono le raccolte illimitate in componenti logici oppure finestre. Le funzioni di windowing raggruppano le raccolte illimitate in base ai timestamp di i singoli elementi. Ogni finestra contiene un numero finito di elementi.

Imposta le seguenti finestre con l'SDK Apache Beam:

Finestre a cascata

Una finestra a cascata rappresenta un intervallo di tempo costante e separato nei dati flusso di dati.

Ad esempio, se imposti una finestra a cascata di trenta secondi, gli elementi con i valori di timestamp [0:00:00-0:00:30) sono nella prima finestra. Elementi con i valori di timestamp [0:00:30-0:01:00) si trovano nella seconda finestra.

L'immagine seguente illustra come gli elementi sono suddivisi in rotolamenti di trenta secondi finestre.

Un'immagine che mostra finestre a cascata della durata di 30 secondi

Finestre saltanti

Una finestra di hopping rappresenta un intervallo di tempo costante nella stream di dati. Le finestre apribili possono sovrapporsi, mentre le finestre a cascata sono separate.

Ad esempio, una finestra di salto può iniziare ogni 30 secondi e acquisire minuto di dati. La frequenza con cui iniziano le finestre di salto è chiamato period. Questo esempio ha una finestra di un minuto e una durata di trenta secondi.

L'immagine seguente illustra come gli elementi sono suddivisi in categorie di un minuto finestre saltanti con un periodo di trenta secondi.

Un'immagine che mostra finestre saltanti con una durata della finestra di 1 minuto e una durata della finestra di 30 secondi

Per calcolare le medie correnti dei dati, utilizza finestre di hopping. Puoi utilizzare l'offerta finestre saltanti con un periodo di trenta secondi per calcolare una corsa di un minuto ogni 30 secondi.

Finestre di sessione

Una finestra di sessione contiene elementi compresi in un intervallo di tempo rispetto a un altro elemento. La durata intervallo è un intervallo tra i nuovi dati in uno stream di dati. Se i dati vengono inviati dopo la durata dell'intervallo, i dati vengono assegnati a una nuova finestra.

Ad esempio, le finestre di sessione possono dividere uno stream di dati che rappresenta il mouse dell'utente. attività. Questo stream di dati potrebbe avere lunghi periodi di inattività sparpagliati con molti clic. Una finestra della sessione può contenere i dati generati dai clic.

Il windowing della sessione assegna finestre diverse a ogni chiave dati. Rulli e le finestre hopping contengono tutti gli elementi nell'intervallo di tempo specificato, di chiavi di dati.

La seguente immagine mostra come gli elementi sono suddivisi in finestre di sessione.

Un'immagine che mostra finestre di sessione con un intervallo di tempo minimo

Filigrane

Una filigrana è una soglia che indica quando Dataflow prevede tutti i dati contenuti in una finestra. Se la filigrana è andata a buon fine dopo la fine della finestra e arrivano i nuovi dati con un timestamp finestra, i dati sono considerati dati in ritardo. Per ulteriori informazioni, vedi Filigrane e dati in ritardo nella documentazione di Apache Beam.

Dataflow monitora le filigrane per i seguenti motivi:

  • Non è garantito che i dati arrivino in ordine cronologico o a intervalli prevedibili.
  • Non è garantito che gli eventi di dati vengano visualizzati nelle pipeline nello stesso ordine generati.

L'origine dati determina la filigrana. Puoi consentire dati in ritardo con l'SDK Apache Beam.

Trigger

Gli attivatori determinano quando emettere risultati aggregati all'arrivo dei dati. Di Per impostazione predefinita, i risultati vengono emessi quando la filigrana oltrepassa la fine della finestra.

Puoi utilizzare l'SDK Apache Beam per creare o modificare i trigger per ogni in una pipeline in modalità flusso.

L'SDK Apache Beam può impostare trigger che operano su qualsiasi combinazione delle seguenti condizioni:

  • Ora dell'evento, come indicata dal timestamp su ciascun elemento dei dati.
  • Tempo di elaborazione, ovvero il tempo in cui l'elemento dati viene elaborato in qualsiasi fase specifica della pipeline.
  • Il numero di elementi di dati in una raccolta.

Passaggi successivi