我对"广播状态"和broadcast((运算符之间的区别感到困惑,最后我在下面的线程中得到了Flink专家的帮助。
"广播状态"解锁了 Flink CEP 库"动态模式"功能的实现是什么意思?
最后似乎得出的结论是,"广播状态"可以通过RichCoFlatMap将动态规则存储在keyed流中,但是broadcast((运算符不能,那么我可以知道RichCoFlatMap的"广播状态"如何存储动态规则以及为什么broadcast((运算符不能通过RichCoFlatMap存储动态规则吗?我可以举个例子来解释它吗?
这是完全不同的概念。此外,broadcast()
是BroadcastState
的先决条件。
broadcast()
指定数据的分区,即流的每个元素都应广播给每个并行下游运算符。
BroadcastState
是一种运算符状态,首先允许从广播流读写并从非广播流读取。在此之前,没有办法加入这样的两个流。此外,此状态将确保在还原后,所有并行实例中的状态的每个实例都是相同的。
有关BroadcastState
的更多信息,请查看此文档。
它们是不同的概念,BroadcastState 是一个存储概念,而 Broadcast (( 是一个操作,其目的是为您构建 BroadcastStream。