Flink扇出flatMap

时间:2015-11-21 09:40:06

标签: apache-flink flink-streaming

我正在使用Flink 0.10.0 DataStream。 这是我的要求。

  • 我的源系统是广播消息的自定义系统。在我的自定义SourceFunction实现中,我实现了回调以监听消息。
  • 每个回调都会收到不同类型的消息。
  • 我想解码/转换回调中收到的对象以发送到我的SinkFunction。我相信我可以使用FlatMapFunction或类似功能。
  • 由于我有各种回调,我听它们每个的解码逻辑是不同的。我想不能为所有这些都有一个FlatMapFunction,因为IN类型会有所不同。

如何设计具有以下拓扑结构的系统:

来源
| - FlatMap_1(处理回调1收到的消息类型) - >水槽
| - FlatMap_2(处理回调2收到的消息类型) - >水槽
| - FlatMap_3(处理回调3收到的消息类型) - >水槽
等等。

我不想将一个的输出发送到另一个。这本质上是扇出,即我希望它们中的每一个并行运行,并且希望Source能够找出将接收到的消息发送到哪个运营商。

我已经阅读了文档和示例,但无法找到与此匹配的示例。希望对此有所帮助。

1 个答案:

答案 0 :(得分:3)

我认为您正在寻找在DataStream API transformation section末尾解释的Split operator。 Split操作符将一个输入流定向到不同的输出流。