Сплит против фильтра против модифицированной функции карты

Допустим, вы обрабатываете поток событий, которые проходят через две функции карты. Первый пытается классифицировать события по некоторому критерию, но в некоторых случаях он может потерпеть неудачу (оставляя событие без изменений). Второй должен действовать только на те события, которые нельзя классифицировать на первом этапе. Я не уверен, какая стратегия будет лучшей:

  1. Разделите поток после применения первого оператора, примените второй оператор только к одной из ветвей (той, которая содержит неклассифицированные события), а затем снова соедините два потока с помощью объединения

  2. Разделить поток как в 1, но используя фильтр вместо разделения

  3. Не делите поток вообще после применения первого оператора карты. Вместо этого просто сохраните исходный поток и измените вторую функцию карты, чтобы проверить, должна ли она воздействовать на текущее событие или нет (на основе результата классификации первого шага)

1 ответ

Я думаю, что самым чистым подходом было бы реализовать первую карту как ProcessFunction с побочным выводом, за которым следует второй преобразователь и затем объединение.

Другие вопросы по тегам