Apache Flink é uma estrutura de processamento de fluxo de código aberto para processamento de fluxos de dados ilimitados e limitados. Na operação da janela de tempo do Flink, o gatilho é um conceito muito importante, que determina quando a janela deve ser calculada e os resultados exibidos. Os gatilhos definem as condições para quando uma janela está pronta para ser processada (ou seja, quando os cálculos são acionados). tipo de janela
janela de oportunidade(Janelas de Tempo): Janelas baseadas na divisão de tempo, como janelas de tempo contínuas (Janelas de Tempo Tumbling) e janelas de tempo deslizantes (Janelas de Tempo Deslizante).
janela de tempo do evento(Janelas de hora do evento): Uma janela baseada em carimbos de data/hora do evento, que pode lidar com dados fora de ordem.
Acionar
Os gatilhos são usados para definir condições para quando uma janela estiver pronta para cálculo. Flink fornece alguns gatilhos integrados e permite que os usuários personalizem os gatilhos conforme necessário.
Gatilho integrado
ProcessamentoTimeTrigger: um gatilho baseado no tempo de processamento que é acionado sempre que o intervalo de tempo especificado é atingido.
EventoTimeTrigger : Dispara com base na hora do evento, acionado quando chega o horário de término da janela. Isso é adequado para processar fluxos de dados de tempo de evento ordenados ou não ordenados.
Contagem de gatilho: dispara com base no número de elementos, acionado quando o número de elementos na janela atinge o limite especificado.
Gatilho personalizado
Os usuários podem criar gatilhos personalizados implementando a interface Trigger. Os gatilhos personalizados podem decidir quando disparar cálculos de janela com base em lógica complexa. Os gatilhos personalizados geralmente precisam implementar os seguintes métodos:
no elemento(element, timestamp, window, ctx): Chamado quando um elemento é adicionado à janela.
emHoraDoEvento(hora, janela, ctx, saída): Chamado quando chega a hora do evento da janela.
emProcessamentoTempo(time, window, ctx, out): Chamado quando chega o tempo de processamento da janela.
emMesclar(outro): Chamado quando duas janelas são mescladas (por exemplo, usado em janelas de sessão).
podeMesclar(): Indica se o gatilho oferece suporte à mesclagem de janelas.
efeito
A principal função dos gatilhos é controlar o tempo de cálculo das janelas, tornando as operações das janelas do Flink mais flexíveis e poderosas. Ao escolher os gatilhos certos, você pode otimizar o desempenho e a utilização de recursos de seus aplicativos de processamento de fluxo.
Exemplo
Aqui está um exemplo simples usando janelas e gatilhos Flink (assumindo que a API Java seja usada):