Flink BroadcastProcessFunction vs CoProcessFunction



BroadcastProcessFunctionCoProcessFunction有什么不同?据我所知,在他们的帮助下,你可以做非常相似的事情我的意思是.connect流,并并行处理来自两个流的消息。也就是说,使用CoProcessFunction可以实现广播状态的功能。

什么时候应该使用广播状态模式,什么时候可以使用纯.connect+CoProcessFunction?

区别在于名称:)BroadcastProcessFunction允许您广播一个流到所有并行操作符实例,因此,如果其中一个流包含通用数据,如用于映射的字典,那么您可以简单地使用broadcast将其发送到所有并行操作符。

CoProcessFunction将允许您处理两个流连接和分区在所有并行实例以某种方式,无论是使用keyByrebalance或任何其他方式。

所以,基本上不同之处在于,如果你有两个流s1s2,并行度为3。如果你广播流s1,这意味着所有来自s1的元素将被传递到BroadcastProcessFunction的每个实例。但是,如果您执行类似s1.connect(s2)的操作,则根据分区,只有s1中的一些元素子集将传递给每个CoProcessFunction

请注意,如果您使用parallelism等于1,两个函数在处理方面的工作将或多或少相同。

相关内容

  • 没有找到相关文章

最新更新