Flink Tumbling задерживает запуск getResult с помощью AscendingTimestampExtractor - PullRequest
0 голосов
/ 25 февраля 2020

Я использую падающее окно (на 5 минут) и AscendingTimestampExtractor, так как мой источник от Кафки. Но окно всегда работает дольше, чем 5 минут. Кто-нибудь может предложить?

1 Ответ

0 голосов
/ 25 февраля 2020

Давайте представим, что мы говорим об окне для интервала с 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 будет удерживать всех на своем водяном знаке. А если вы используете водяные знаки для каждого раздела, то самый медленный раздел будет определять общий водяной знак.

...