作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Flink 处理我的流数据。
我有两个数据源:A 和 B。
// A
DataStream<String> dataA = env.addSource(sourceA);
// B
DataStream<String> dataB = env.addSource(sourceB);
我使用 map
处理来自 A 和 B 的数据。
DataStream<String> res = mergeDataAAndDataB(); // how to merge dataA and dataB?
表示 sourceA 正在发送:"aaa", "bbb", "ccc"...
,sourceB 正在发送:"A", "B", "C"...
.
我想做的是将它们合并为 Aaaa, Bbbb, Cccc...
生成一个新的 DataStream<String>
对象。
如何实现?
最佳答案
Flink 中有两种流合并。
dataA.union(dataB)
将创建一个新流,其中包含两个流的元素,以某种任意方式混合,可能是"aaa"、"bbb"、"A"、"ccc"、"B"、"C"
,这不是您所要求的——只是为了完整性而提及它。
你想要的是创建一个连接流,通过
dataA.connect(dataB)
然后您可以使用 RichCoFlatMapFunction
或 KeyedCoProcessFunction
进行处理,以计算一种将字符串粘合在一起的连接。
你会找到一个 tutorial on the topic of connected streams在 Flink 文档中,以及在 training exercises that accompany the tutorials 中相当接近的示例.
关于apache-flink - 如何在 Apache Flink 中合并两个数据流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63050324/
我是一名优秀的程序员,十分优秀!