Compartilhamento de tecnologia

Gatilho de janela Flink (gatilho) (2)

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Gatilho de janela Flink (gatilho) (1)
Gatilho de janela Flink (gatilho) (2)

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):

DataStream