Apache Flink: является ли .countWindow () правильным способом обработки кода после ряда событий? - PullRequest
0 голосов
/ 31 марта 2020

Вкл. Apache Флинк 1.8.1

Я читал https://flink.apache.org/news/2015/12/04/Introducing-windows.html, и я пытаюсь выяснить, подходит ли использование countWindow(size: Int) для моего варианта использования: когда N пользователей посещают страницу справки на моем веб-сайте, я хотел бы отметить их всех для обслуживания клиентов. Я сбит с толку, потому что есть ограниченная документация по .countWindow(), и я с трудом могу подтвердить, что она устарела в пользу другого подхода.

Я баловался этим (игнорируйте красные выделения): enter image description here

Исходный код countWindow() показывает следующее: enter image description here

Тогда поиск документации был настолько ограничен. В лучшем случае я обнаружил, что он указан в 1.3 документах, но моя IDE не означает, что он устарел. Тогда есть то, что кажется несвязанным: https://ci.apache.org/projects/flink/flink-docs-release-1.9/api/java/org/apache/flink/table/runtime/operators/window/CountWindow.html

Я иду по неправильной кроличьей норе или есть лучший способ Flink для моего указанного выше c крайнего случая?

1 Ответ

1 голос
/ 31 марта 2020

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

Код Вы вставили показывает правильное использование счетчика окон.

Что касается вопроса о том, является ли хорошей идеей использовать окно Count для этого - это зависит.

Технически это должно работать, но если у вас много пользователей, которые посещают только одну страницу, это создаст множество windows, которые не будут закрыты, поэтому вам следует позаботиться об этом самостоятельно.

Как правило, это должно быть проще сделать с помощью KeyedProcessFunction и ValueState, которые сохранят количество посещений.

...