Статьи

Глубокое погружение в акробатическое окно Apache Flink — часть 3

Часть-1 | Часть 2

Обрабатывать опоздания

На практике элементы или события не поступают в той последовательности, в которой они были созданы. Это может быть связано с внешними факторами, такими как задержка сети или пользователь вышел из сети. Это распространенная проблема в потоковых вычислениях и должна решаться либо потоковой средой, либо самим приложением. 

** Мое использование слов «элементы», «события» или «сообщения» в этом посте представляет собой единицу неизменяемых данных, генерируемых в источнике и доступных в качестве вывода из потока

Итак, что такое задержка здесь , согласно Флинку: «Поздние элементы — это элементы, которые поступают после того, как часы времени системы (как сигнализируются водяными знаками) уже прошли время отметки времени последнего элемента». Проще говоря, если окно заканчивается в 15:00:00, то любой элемент, поступающий в систему Flink после этой отметки времени, запаздывает. По умолчанию поздние элементы отбрасываются Flink .

Чтобы позволить пользователям обрабатывать поздние элементы, Flink предоставляет метод, называемый « allowedLateness». Вы можете указать, как оконное преобразование должно обрабатывать поздние элементы и сколько допускается задержек. Элементы, поступающие в пределах допустимого времени ожидания, все еще помещаются в окна и учитываются при вычислении результатов окна. Если элементы прибывают после допустимого опоздания, они будут отброшены. 

Примечание. Установка допустимого времени задержки действительна только для окон времени события .

Е Xample 1

Я использую класс «ElementGeneratorSource» (из предыдущего поста ) в качестве моего источника, я настроил его, чтобы вручную генерировать некоторые поздние элементы следующим образом:

Предполагая текущее системное время как 2020-03-16 13:42:40 

Элемент Отметка Окно 5 секунд
1 2020-03-16T13: 42: 20
2 2020-03-16T13: 42: 21
3 2020-03-16T13: 42: 26 Триггеры 1-й водяной знак
4 2020-03-16T13: 42: 23 1-й поздний элемент
5 2020-03-16T13: 42: 24 2-й поздний элемент
6 2020-03-16T13: 42: 28
7 2020-03-16T13: 42: 39 Триггеры 2-го водяного знака

Теперь код Flink для обработки поздних элементов


Джава