我有一个 DataStream<Tuple2<String, Double>> one
以及 DataStream<Tuple2<String, Double>> second
,其中第一个元素与另一个元素有更多的元素,并且它们有不同的键。此外,数据流“2”基本上只有一个键值对。所以,我想连接这些流,以便将第一个数据流的值除以第二个数据流的常量值。如何在apache flink中实现这一点?这是通过连接的数据流实现的还是另一种方式?
我有一个 DataStream<Tuple2<String, Double>> one
以及 DataStream<Tuple2<String, Double>> second
,其中第一个元素与另一个元素有更多的元素,并且它们有不同的键。此外,数据流“2”基本上只有一个键值对。所以,我想连接这些流,以便将第一个数据流的值除以第二个数据流的常量值。如何在apache flink中实现这一点?这是通过连接的数据流实现的还是另一种方式?
1条答案
按热度按时间fjnneemd1#
在所描述的情况下,最好的方法是简单地使用广播状态模式。具有少量元素的第二流将成为广播流,并且具有更多元素的第一流随后将被第二流的元素丰富。所以,你会有这样的结果:
然后,在process元素的process函数中,您可以进行扩展以生成预期的元组。
有关广播模式的更多信息,请参见:https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/state/broadcast_state.html