Расщепление потока во Флинке - PullRequest
0 голосов
/ 24 февраля 2020

Если я хочу разделить поток во Flink, каков наилучший способ сделать это?

Я мог бы использовать функцию процесса и разделить поток с помощью побочных выходов. Передаются ли водяные знаки на боковые выходы вместе с элементами, чтобы данные на каждом боковом выходе могли go нисходить к другим оконным операторам?

Или я должен просто использовать несколько операций filter () для фильтрации поток в несколько потоков, каждый из которых содержит подмножество элементов? Как обрабатываются водяные знаки в этом случае? Все ли водяные знаки передаются всем отфильтрованным потокам?

Если оба варианта возможны, что является предпочтительным (который имеет лучшую производительность)? Или есть лучший способ, чем любой из описанных выше вариантов?

1 Ответ

2 голосов
/ 25 февраля 2020

Боковые выходы - это обычно предпочтительный способ разделения потока. Их преимущество заключается в возможности разделения потока n-способами на потоки разных типов и с превосходной производительностью.

Существует еще один способ разделения потока, который вы не упомянули, а именно: с помощью разделения и выберите. Разделять / выбирать НЕ рекомендуется. Реализация - это что-то вроде хака, а производительность не такая хорошая.

...