Java ApacheFlink多次处理流

Java ApacheFlink多次处理流,java,apache-flink,Java,Apache Flink,我试图使用ApacheFlink使用两种不同的算法来处理数据流。我的伪代码如下: env = getEnvironment(); DataStream<Event> inputStream = getInputStream(); // How to replicate the input stream? Array[DataStream<Event>] inputStreams = inputStream.clone() // apply different opera

我试图使用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();
env=getEnvironment();
DataStream inputStream=getInputStream();
//如何复制输入流?
数组[DataStream]inputStreams=inputStream.clone()
//对复制的流应用不同的操作
outputOne=inputStreams[0]。映射(func1);
OutputWO=inputStreams[1]。映射(func2);
...
输出按钮。添加接收器(sink1);
输出2.addSink(sink2);
execute();
我用Flink文档做了一些研究。似乎没有克隆流的概念。他们都没有做我想做的事。除了从源多次创建流,还有其他方法吗?谢谢你的帮助

“克隆”流非常简单,不需要专门的操作员。您可以在同一
数据流上应用多个转换。所有下游转换都将使用整个流

因此,在您的示例中,您可以:

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();
env=getEnvironment();
DataStream inputStream=getInputStream();
outputOne=inputStream.map(func1);//应用第一变换
outputwo=inputStream.map(func2);//应用第二变换
...
输出按钮。添加接收器(sink1);
输出2.addSink(sink2);
execute();

谢谢,我假设一旦调用了inputStream.map,inputStream实例就不再可用了。那么,Flink数据流是否可以重用?这个答案可能会帮助您: