java - Apache Flink Process Stream 多次

标签 java 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()正在做我想要的。有没有从源头多次创建流的替代方法?感谢您的帮助。

最佳答案

“克隆”流非常简单,不需要专门的运算符(operator)。您可以对同一个 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();

关于java - Apache Flink Process Stream 多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44644773/

相关文章:

serialization - Flink流: Unexpected charaters in serialized String messages

java - 如何找到CLIENT_CHARACTERISTIC_CONFIG?

java - 在 Flink 数据集上应用多个 JOIN 的分区策略

java - 为什么我收到此错误,该错误指示该方法必须返回float类型的值

java - 不明白在处理 3 中访问 CSV 文件是如何工作的。需要解释

java - Flink JDBC 连接 Multi-Tenancy

apache-flink - Flink 可重扩展键控流状态函数

scala - flink 作业没有跨机器分布

java - 堆排序比我更狡猾

java - 如何让 Java 线程等待另一个线程的输出?