Apache Flink è un framework di elaborazione di flussi open source per l'elaborazione di flussi di dati illimitati e limitati. Nel funzionamento della finestra temporale di Flink, il trigger è un concetto molto importante, che determina quando deve essere calcolata la finestra e l'output dei risultati. I trigger definiscono le condizioni per cui una finestra è pronta per essere elaborata (ovvero quando vengono avviati i calcoli). tipo di finestra
finestra temporale(Time Windows): finestre basate sulla divisione del tempo, come finestre temporali scorrevoli (Tumbling Time Windows) e finestre temporali scorrevoli (Sliding Time Windows).
finestra temporale dell'evento(Finestre dell'ora dell'evento): una finestra basata sui timestamp degli eventi, che può gestire dati fuori ordine.
Grilletto
I trigger vengono utilizzati per definire le condizioni per quando una finestra è pronta per il calcolo. Flink fornisce alcuni trigger integrati e consente agli utenti di personalizzare i trigger secondo necessità.
Trigger integrato
Tempo di elaborazioneTrigger: un trigger basato sul tempo di elaborazione che si attiva ogni volta che viene raggiunto l'intervallo di tempo specificato.
EventoTimeTrigger : attivazione basata sull'ora dell'evento, attivata quando viene raggiunta l'ora di fine della finestra. Questo è adatto per l'elaborazione di flussi di dati di tempo di evento ordinati o non ordinati.
ConteggioTrigger: trigger basato sul numero di elementi, attivato quando il numero di elementi nella finestra raggiunge la soglia specificata.
Trigger personalizzato
Gli utenti possono creare trigger personalizzati implementando l'interfaccia Trigger. I trigger personalizzati possono decidere quando attivare i calcoli della finestra in base a una logica complessa. I trigger personalizzati in genere devono implementare i seguenti metodi:
suElemento(elemento, timestamp, finestra, ctx): chiamato quando un elemento viene aggiunto alla finestra.
all'ora dell'evento(time, window, ctx, out): chiamato quando arriva l'ora dell'evento della finestra.
inTempoDiElaborazione(time, window, ctx, out): chiamato quando arriva il tempo di elaborazione della finestra.
suUnisci(altro): chiamato quando due finestre vengono unite (ad esempio, utilizzato nelle finestre di sessione).
puòUnire(): indica se il trigger supporta l'unione delle finestre.
effetto
La funzione principale dei trigger è controllare i tempi di calcolo delle finestre, rendendo le operazioni delle finestre di Flink più flessibili e potenti. Scegliendo i trigger appropriati, puoi ottimizzare le prestazioni e l'utilizzo delle risorse delle tue applicazioni di elaborazione del flusso.
Esempio
Ecco un semplice esempio che utilizza finestre e trigger Flink (supponendo che venga utilizzata l'API Java):