2016-06-15 6 views
3

Если элемент прибывает, что нарушает условие водяного знака, как обрабатывается событие? Это выброшено? Или событие все еще распространяется вниз по течению с прошлыми функциями окон, переработанными поздним событием?Apache Flink: Как обрабатываются последние события?

Документация подтверждает, что происходят поздние события, но не объясняет, как они обрабатываются. https://ci.apache.org/projects/flink/flink-docs-release-1.0/apis/streaming/event_time.html

ответ

1

По состоянию на Flink 1.0 поздние элементы обрабатываются путем переоценки оконной функции с помощью окна «singleton», которое содержит только последнее событие.

В будущих версиях Flink пользователь будет иметь больше контроля над этим поведением. Смотрите эту тему из списка рассылки Flink-Dev:

http://mail-archives.apache.org/mod_mbox/flink-dev/201604.mbox/%[email protected].com%3E

1

По умолчанию поздние элементы отбрасываются, когда водяной знак в конце прошлого окна. Тем не менее, Flink позволяет указать максимально допустимую задержку для оконных операторов. Разрешенная задержка определяет, сколько элементов времени может быть задерживается до того, как они будут сброшены, а его значение по умолчанию равно 0. Элементы, которые поступают после водяного знака, прошли конец окна, но до того, как они пройдут в конце окна плюс разрешенная задержка, все еще добавляются в окно. В зависимости от используемого триггера, последний, но не отбрасываемый элемент может привести к тому, что окно снова запустится. Это относится к EventTimeTrigger.

Для того, чтобы сделать эту работу, Flink сохраняет состояние окон, пока не истечет срок их действия. Как только это произойдет, Flink удалит окно и удалит его состояние.

Здесь вы можете проверить жизненный цикл. https://ci.apache.org/projects/flink/flink-docs-release-1.3/dev/windows.html#window-lifecycle