Как работает триггер потока данных AfterProcessingTime.pastFirstElementInPane()?
В мире потоков данных.
Мое понимание, когда я говорю:
Window.into(FixedWindows.of(Duration.standardHours(1)))
.triggering(AfterProcessingTime.pastFirstElementInPane()
.plusDelayOf(Duration.standardMinutes(15))
заключается в том, что в течение фиксированного окна продолжительностью один час триггер ожидает или группирует элементы после того, как он увидел первый элемент.
Но когда я говорю:
Window.into(FixedWindows.of(Duration.standardHours(1)))
.triggering(AfterProcessingTime.pastFirstElementInPane()
Срабатывает ли он каждый раз с первого раза, когда видит первый элемент, или неявно пакетирует элементы? потому что стрельба по каждому элементу перегружает систему.
1 ответ
При обоих этих триггерах окно будет запущено один раз, а все оставшиеся элементы будут отброшены. Ты можешь использовать Repeatedly.forever(...)
запускать несколько раз.
Что касается вашего конкретного вопроса, существует небольшое количество пакетирования, которое происходит, если элементы прибывают примерно в одно и то же время.
Предполагая, что вы имели в виду следующее, тогда да, второй будет срабатывать гораздо чаще и может перегрузить систему.
Repeatedly.forever(AfterProcessingTime.pastFirstElementInPane()
.plusDelayOf(Duration.standardMinutes(15)))
против
Repeatedly.forever(AfterProcessingTime.pastFirstElementInPane())