Apache Flink - Характеристики времени - PullRequest
0 голосов
/ 28 августа 2018

Как я могу использовать характеристики времени проглатывания в Apache Flink. Я знаю, что нам нужно установить временные характеристики среды. Но как я могу собрать данные с отметками времени, которые можно назвать временем приема. В настоящее время, когда я использую его, он обрабатывает окно на основе системного времени. Я хочу выполнить обработку в зависимости от времени, когда данные поступают в среду Flink.

Небольшой фрагмент кода, который может помочь понять это:

Временные характеристики для окружающей среды:

env.setStreamTimeCharacteristic(TimeCharacteristic.IngestionTime);

Время окна:

keyedEvents.timeWindow(Time.minutes(5))

Коллекция в источнике:

ctx.collect(monSourceData);

Если сбор данных начинается, скажем, в 11:03, я хочу завершить его в 11:08, то есть в течение 5 минут. Но он останавливается в 11:05 (как-то ведет себя как время обработки).

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 28 августа 2018

Падающие и скользящие окна во Flink всегда выровнены по часам (либо часы времени события, определенные событиями и водяными знаками, либо системные часы); временные окна не соответствуют первому событию. Поэтому если у вас есть окна продолжительностью 5 минут, будет окно, например, для интервала с 11:00 до 11:05, независимо от TimeCharacteristic.

Падающие окна, однако, принимают необязательный параметр offset , который можно использовать для смещения этого выравнивания. Таким образом, вы можете указать TumblingEventTimeWindows.of(Time.minutes(5), Time.minutes(3)), например, чтобы сдвинуть интервалы на 3 минуты.

...