java - 如何在 Flink 中连接两个流并进行操作?

标签 java stream apache-flink flink-streaming

我有一个DataStream<Tuple2<String, Double>> oneDataStream<Tuple2<String, Double>> second ,其中第一个元素包含更多来自另一个元素的元素,并且它们具有不同的键。此外,Datastream“二”基本上有一个键值对。因此,我想连接这些流,以便将第一个数据流的值除以第二个数据流的常量值。在 Apache Flink 中如何做到这一点?这是通过连接的数据流完成的还是另一种方式?

最佳答案

在所描述的情况下,最好的想法是简单地使用广播状态模式。具有很少元素的第二个流将成为广播流,而具有更多元素的第一个流将用第二个流的元素来丰富。 所以,你会得到类似的东西:

//define broadcast state here

firstStream.keyBy([someKey])
.connect(secondStream.broadcast([mapStateDescriptor])
.process([YourProcessFunction])

然后在流程元素的流程函数中,您可以进行丰富以生成预期的元组。

有关广播模式的更多信息可以在这里找到:https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/state/broadcast_state.html

关于java - 如何在 Flink 中连接两个流并进行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60450061/

相关文章:

java - 为什么运行示例 flink 应用程序会抛出此错误?

java - EOFException 的奇怪行为

Flutter audioplayers plugin - 如何从此链接播放在线广播?

Java TreeMap 获取最小值和最大值

java - Spring MVC + Spring Security - 使用 JSON 的 Controller 身份验证

node.js - 将麦克风输入流式传输到 Google Speech API

java - toChanglelogStream 打印不同类型的更改

machine-learning - Apache Flink 与 Apache Spark 作为大规模机器学习平台?

java - 无法解析符号 AndroidScheduler

java - 尽管出现了 fragment 内容,但工具栏内容并未出现