Как получить последнее значение перед текущим окном во время Flink уменьшить расчет - PullRequest
0 голосов
/ 23 сентября 2018

Я использую Flink 1.6 timeWindow.Предполагая, что у меня есть следующая точка данных:

Метка времени, значение

12: 55: 00, 10

13:05:00, 12

13: 30: 00, 14

13: 59: 00, 13

14: 02: 00, 17

Теперь мое временное окно - 13:00 (включительно) ~ 14:00 (исключение), как я могу получить последнее значение, которое равно 12:55:00, 10, как начальное значение для текущего расчета окна?

Спасибо.

1 Ответ

0 голосов
/ 23 сентября 2018

Говоря в общем, есть два способа, которыми вы можете подойти к этому:

  1. какое-то настраиваемое оконное управление
  2. использовать вместо него ProcessFunction

УчитываяСпособ разработки оконного API, я не вижу никакого способа сделать это при использовании предварительной агрегации (то есть, уменьшить или агрегировать), но я думаю, что вы могли бы сделать что-то с ProcessWindowFunction и пользовательским Evictor, или используяglobalState в ProcessWindowFunction.Context для сохранения состояния между одним окном и следующим.

Одна из проблем, с которой вы можете столкнуться, заключается в том, что, если, например, нет событий, приходящихся на час, с 13:00 до 14:00, то нетокно будет создано или оценено.Если это проблема, тогда необходима дальнейшая настройка.

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

...