Apache Flink es un marco de procesamiento de flujos de código abierto para procesar flujos de datos ilimitados y limitados. En la operación de ventana de tiempo de Flink, el disparador es un concepto muy importante, que determina cuándo se debe calcular la ventana y generar los resultados. Los activadores definen las condiciones para cuando una ventana esté lista para ser procesada (es decir, cuando se activan los cálculos). tipo de ventana
ventana de tiempo(Ventanas de tiempo): ventanas basadas en la división del tiempo, como ventanas de tiempo móviles (ventanas de tiempo volteables) y ventanas de tiempo deslizantes (ventanas de tiempo deslizantes).
ventana de tiempo del evento(Ventanas de hora del evento): una ventana basada en marcas de tiempo de eventos, que puede manejar datos desordenados.
Desencadenar
Los activadores se utilizan para definir condiciones para cuando una ventana esté lista para el cálculo. Flink proporciona algunos activadores integrados y permite a los usuarios personalizarlos según sea necesario.
Gatillo incorporado
Trigger de tiempo de procesamiento: Un disparador basado en el tiempo de procesamiento que se activa cada vez que se alcanza el intervalo de tiempo especificado.
Activador de tiempo de evento : Activador basado en la hora del evento, activado cuando llega la hora de finalización de la ventana. Esto es adecuado para procesar flujos de datos en tiempo de eventos ordenados o desordenados.
Contar disparador: Activador basado en la cantidad de elementos, que se activa cuando la cantidad de elementos en la ventana alcanza el umbral especificado.
Disparador personalizado
Los usuarios pueden crear activadores personalizados implementando la interfaz Trigger. Los activadores personalizados pueden decidir cuándo activar los cálculos de ventana basándose en una lógica compleja. Los activadores personalizados normalmente necesitan implementar los siguientes métodos:
enElemento(elemento, marca de tiempo, ventana, ctx): se llama cuando se agrega un elemento a la ventana.
enEventTime(hora, ventana, ctx, salida): se llama cuando llega la hora del evento de la ventana.
enTiempoDeProcesamiento(time, window, ctx, out): se llama cuando llega el tiempo de procesamiento de la ventana.
enFusionar(otro): se llama cuando se fusionan dos ventanas (por ejemplo, se usa en ventanas de sesión).
puedeFusionar(): indica si el activador admite la combinación de ventanas.
efecto
La función principal de los activadores es controlar el tiempo de cálculo de las ventanas, lo que hace que las operaciones de ventanas de Flink sean más flexibles y poderosas. Al elegir los activadores correctos, puede optimizar el rendimiento y la utilización de recursos de sus aplicaciones de procesamiento de flujo.
Ejemplo
A continuación se muestra un ejemplo sencillo que utiliza ventanas y activadores de Flink (suponiendo que se utilice la API de Java):