apache flink进程流多次

enyaitl3  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(316)

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

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()都不是我想要的。除了从源多次创建流之外,还有其他方法吗?谢谢你的帮助。

4szc88ey

4szc88ey1#

“克隆”流非常简单,不需要专用的操作符。您可以在同一个对象上应用多个变换 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();

相关问题