Apache Flink — это платформа обработки потоков с открытым исходным кодом для обработки неограниченных и ограниченных потоков данных. В работе временного окна Flink триггер является очень важной концепцией, которая определяет, когда окно должно быть рассчитано и выведены результаты. Триггеры определяют условия, когда окно готово к обработке (т. е. когда запускаются вычисления). тип окна
временное окно(Временные окна): окна на основе разделения времени, такие как скользящие временные окна (переворачивающиеся временные окна) и скользящие временные окна (скользящие временные окна).
окно времени события(Окна времени событий): окно, основанное на временных метках событий, которое может обрабатывать неупорядоченные данные.
Курок
Триггеры используются для определения условий, когда окно готово к расчету. Flink предоставляет некоторые встроенные триггеры и позволяет пользователям настраивать триггеры по мере необходимости.
Встроенный триггер
ProcessingTimeTrigger: триггер, основанный на времени обработки, который срабатывает при достижении указанного интервала времени.
EventTimeTrigger : триггер на основе времени события, срабатывает при достижении конечного времени окна. Это подходит для обработки упорядоченных или неупорядоченных потоков данных времени события.
CountTrigger: триггер на основе количества элементов, срабатывает, когда количество элементов в окне достигает указанного порога.
Пользовательский триггер
Пользователи могут создавать собственные триггеры, реализуя интерфейс Trigger. Пользовательские триггеры могут решать, когда запускать расчеты окон на основе сложной логики. Пользовательские триггеры обычно должны реализовывать следующие методы:
onElement(element, timestamp, window, ctx): вызывается, когда элемент добавляется в окно.
onEventTime(time, window, ctx, out): вызывается, когда наступает время события окна.
onProcessingTime(time, window, ctx, out): вызывается, когда наступает время обработки окна.
наMerge(другое): вызывается при объединении двух окон (например, используется в окнах сеанса).
canMerge(): указывает, поддерживает ли триггер объединение окон.
эффект
Основная функция триггеров — управлять временем расчета окон, что делает оконные операции Flink более гибкими и мощными. Выбрав правильные триггеры, вы можете оптимизировать производительность и использование ресурсов приложений потоковой обработки.
Пример
Вот простой пример использования окон и триггеров Flink (при условии, что используется Java API):