У меня проблемы с пониманием концепции водяных знаков и допустимого опоздания.
Ниже приведена выдержка из [почтового архива|https://www.mail-archive.com/user@flink.apache.org/msg08758.html] , в котором говорится о водяных знаках, но у меня естьеще пара вопросов.Ниже приведен пример цитирования.:
Предположим, у вас есть BoundedOutOfOrdernessTimestampExtractor
с 2-минутным ограничением и 10-минутным акробатическим окном, которое начинается в 12:00 и заканчивается в 12: 10:
Если у вас есть следующая последовательность потоков:
12:01, A
12:04, B
WM, 12:02 // 12:04 - 2 minutes
12:02, C
12:08, D
12:14, E
WM, 12:12
12:16, F
WM, 12:14 // 12:16 - 2 minutes
12:09, G
нет допустимых задержек
Оператор окна пересылает логическое время в 12:12, когда он получает<WM, 12:12>
и оценивает окно, которое содержит [A, B, C, D]
в это время, и, наконец, очищает его состояние.<12:09, G>
позднее игнорируется.
допустимая задержка в 3 минуты
Оператор окна вычисляет окно при получении <WM, 12:12>
, но его состояние еще не очищено,Состояние очищается при получении <WM, 12:14>
(время срабатывания окна 12:10 + допустимое опоздание на 3 минуты).<12:09, G>
снова игнорируется.
допустимая задержка в 5 минут
Оператор окна вычисляет окно при получении <WM, 12:12>
, но его состояние еще не очищено,При получении <12:09, G>
окно снова оценивается, но на этот раз с [A, B, C, D, G]
и отправляется обновление.Состояние очищается при получении водяного знака> = 12:15.
Как я понимаю:
- Водяной знак должен сообщать, что любой элемент, который приходит сотметка времени события меньше, чем у водяного знака, будет сброшена.Таким образом, водяной знак 12:02 означает, что Флинк видел все, что должен был увидеть до времени события 12:02.Любой элемент, имеющий временной интервал события меньше этого водяного знака, например 12:01, будет отброшен.
- Понятие «Допустимая задержка» применяется только после последнего водяного знака, отмечающего конец окна
Мои вопросы основаны на понимании:
- Как развивается сообщение "12: 02, C", учитывая, что Flink с предыдущим водяным знаком (WM, 12:02) уже сказал " Я видел все до времени события 12: 02"?
- Я настроил последовательность потоков и вставил еще одну запись 12: 01, CCC в точке, как показано ниже жирным шрифтом в последовательности потоков.
Если у вас следующая последовательность потоков:
12:01, A
12:04, B
WM, 12:02 // 12:04 - 2 minutes
12:02, C
12:01, CCC // Inserted by Sheel
12:08, D
12:14, E
WM, 12:12
12:16, F
WM, 12:14 // 12:16 - 2 minutes
12:09, G
Это все еще в окне 12: 00-12: 10, но за водяным знаком WM, 12:02.Допустим, допустимая задержка составляет 5 минут.Будет ли эта запись принята «каким-то образом», привнося в картину допустимое опоздание, или она будет отброшена, учитывая, что водяной знак 12:02 уже пересек?