Apache Flink流程多次流

时间:2017-06-20 05:49:56

标签: apache-flink

我正在尝试使用Apache Flink使用两种不同的算法处理数据流。我的伪代码如下:

env = getEnvironment();
DataStream<Event> inputStream = getInputStream();
// How to replicate the input stream?
Array[DataStream<Event>] inputStreams = inputStream.clone()

// apply different operations on the replicated streams
outputOne = inputStreams[0].map(func1);
outputTwo = inputStreams[1].map(func2);
 ...
outputOne.addSink(sink1);
outputTwo.addSink(sink2);
env.execute();

我用Flink文档进行了一些研究。似乎没有克隆流的概念。 DataStream.iterate()DataStream.split()都没有完全符合我的要求。是否有从源代码中多次创建流的替代方法?谢谢您的帮助。

1 个答案:

答案 0 :(得分:6)

“克隆”流非常简单,不需要专用的运算符。您可以在同一DataStream上应用多个转换。所有下游转换都将使用完整的流。

所以在你的例子中你做了:

env = getEnvironment();
DataStream<Event> inputStream = getInputStream();

outputOne = inputStream.map(func1); // apply 1st transformation
outputTwo = inputStream.map(func2); // apply 2nd transformation
...
outputOne.addSink(sink1);
outputTwo.addSink(sink2);
env.execute();
相关问题