2015-11-21 2 views
1

Я использую Flink 0.10.0 DataStream. Вот мое требование.Flink fan-out flatMap

  • Моя исходная система - это настраиваемая система, которая передает сообщения. В моей пользовательской реализации SourceFunction у меня есть обратные вызовы для прослушивания сообщений.
  • Каждый из обратных вызовов получает сообщение другого типа.
  • Я хотел бы декодировать/преобразовать объект, полученный в обратном вызове, для отправки на мою SinkFunction. Это, я считаю, я могу сделать с FlatMapFunction или аналогичным.
  • Поскольку у меня есть различные обратные вызовы, которые я слушаю логику декодирования для каждого из них, это разные. Я полагаю, не может иметь ни одной FlatMapFunction для всех из них, поскольку тип IN будет другим.

Как я могу разработать систему, которая имеет следующую топологию:

Источник
| - FlatMap_1 (тип обработки сообщения, полученные от обратного вызова 1) -> Раковина
| - FlatMap_2 (обработка типа полученное сообщение по обратному сообщению 2) -> Sink
| - FlatMap_3 (тип обработки сообщений, полученный обратным вызовом 3) -> Раковина
и так далее.

Я не хочу посылать вывод одного на другой. Это, по сути, Fan-Out, то есть я хотел бы, чтобы каждый из них функционировал параллельно, а также хотел бы, чтобы Source смог определить, какой оператор должен отправить принятое сообщение.

Я прошел через документацию и примеры, но не смог найти пример, который соответствует этому. Поблагодарите помощь в этом.

ответ

3

Я думаю, что вы ищете Split operator, что объясняется в конце DataStream API transformation section. Оператор Split направляет один входной поток в разные выходные потоки.

+0

спасибо за быстрый ответ и извинения за поздний ответ вам. Спасибо, что сработало. Я не уверен, как я не мог получить это из документов :). –

Смежные вопросы