Я использую луч apache для написания потоковых конвейеров. Одним из требований для моего варианта использования является то, что я хочу запускать каждые X минут относительно времени начала или окончания окна. как я могу этого добиться. Текущий триггер AfterProcessingTime.pastFirstElementInPane () находится относительно времени обработки первого элемента в этом окне.
Например, я создал фиксированные 1-минутные окна, поэтому у меня есть window_1 (интервал 0-1 мин), window_2 (интервал 1-2 мин) и так далее. Теперь я хочу, чтобы результаты для каждого окна запускались ровно один раз через 10 минут с начала окна, то есть window_1 на 0 + 10 -> 10-й минуте, window_2 на 11-й минуте (1 + 10). [Примечание: я настраиваю фиксированные окна, чтобы позволить задержку> 10 минут, чтобы элементы не отбрасывались в случае задержки]
Есть ли способ добиться такого срабатывания для фиксированного окна.
Я не могу просто назначить все элементы глобальному окну, а затем выполнять повторный запуск каждую минуту, потому что тогда он теряет информацию о времени окна всех элементов. Например, если в моей коллекции pcollection есть 2 элемента, которые принадлежат window_1 и window_2 на основе метки времени события, но задержались на 3 и 3,2 минуты. Назначение их глобальному окну сгенерирует мне некоторый результат в конце 4-й минуты с учетом обоих элементов, тогда как на самом деле я хочу, чтобы они были назначены там фактическому фиксированному окну (как поздние данные).
Я хочу, чтобы элементы были назначены window_1 и window_2 на основе метки времени события, а затем window_1 запускался на 10-й минуте вывода результата путем обработки только 1 поздних данных для этого окна, а затем window_2 запускался на 11-й минуте с выводом после обработки единственного элемента, который пришла на 3,2 минуты с опозданием. Какой должна быть моя настройка триггера для достижения такого поведения в моем потоковом конвейере.