Давайте представим, что мы говорим об окне для интервала с 9:00 до 9: 04.999. При обработке окна времени обработки, как только время дня достигнет 9:05, окно будет запущено.
Поскольку вы упомянули присваиватель водяных знаков AscendingTimestampExtractor
, я предполагаю, что вы используете окно времени для событий (и не время обработки окон). И когда вы говорите, что окно работает дольше 5 минут, я предполагаю, что вы имеете в виду, что результаты не выдаются сразу, в 9: 05.
В случае оконного времени событий окно закрывается в 9 : 05 будет ждать водяного знака не менее 9:05. Такой водяной знак должен ждать события с отметкой времени не менее 9:05, что означает, что запуск окна задерживается на любую задержку, которую испытывают ваши события.
Часть этой задержки связана с частями вашего конвейера до того, как события будут приняты потребителем Flink Kafka. Затем Flink вызывает некоторую дополнительную задержку: в частности, интервал автоматического добавления водяных знаков (по умолчанию 200 mse c) и сетевая буферизация (по умолчанию 100 mse c) могут оказать заметное влияние.
Обратите внимание: если вы используете параллельный конвейер с keyBy, самый медленный из потребителей Kafka будет удерживать всех на своем водяном знаке. А если вы используете водяные знаки для каждого раздела, то самый медленный раздел будет определять общий водяной знак.