Как правильно соединить ProcessWindowFunction с широковещательным потоком в Flink? - PullRequest
0 голосов
/ 16 апреля 2020

У меня запущен конвейер flink с несколькими моделями, поэтому управление окнами выглядит следующим образом:

DataStream<WindowDeviationResult> aggregatedWindow = keyedStream
                                                        .timeWindow(Time.seconds(window_duration))
                                                        .aggregate( model.getWindowAgreggator(), 
                                                                    model.getWindowProcessor());

Мне нужно отправить состояние, поступающее из другого потока, в оператор ProcessWindowFunction (последний). Обычно я выполняю соединение прямо перед этим и реализую processElement и processBroadcastElement . Но поскольку я передаю WindowProcessFuction в .aggregate в качестве второго параметра, я не могу этого сделать. Какие варианты вы видите для меня здесь?

1 Ответ

0 голосов
/ 16 апреля 2020

Flink не поддерживает подключение потока вещания к оператору окна. Я должен предложить использовать KeyedBroadcastProcessFunction, а не окно, и реализовать собственное управление окнами. Как правило, это не особенно сложно. См. { ссылка } для примера, который может помочь вам начать работу.

...