为什么"广播状态"可以存储动态规则然而broadcast()运算符不能?

时间:2018-05-28 16:45:12

标签: apache-flink flink-streaming

我对#34;广播状态"之间的区别感到困惑。和broadcast()运算符,最后我从以下线程中的Flink专家那里得到了帮助。

What does it mean that "broadcast state" unblocks the implementation of the “dynamic patterns” feature for Flink’s CEP library?

最终似乎得出的结论是"播出状态"可以通过RichCoFlatMap将动态规则存储在键控流中,但是broadcast()运算符不能,所以我可以知道"广播状态"存储RichCoFlatMap的动态规则以及为什么broadcast()运算符不能存储RichCoFlatMap的动态规则?我可以举例解释吗?

2 个答案:

答案 0 :(得分:1)

这些完全是两个不同的概念。此外,broadcast()BroadcastState的先决条件。

broadcast()指定数据分区,表示应将流的每个元素广播到每个并行下游运算符。

BroadcastState是一种运营商状态,首先允许从广播流中读写并从非广播流中读取。在此之前,没有办法加入这两个流。此外,此状态将确保在恢复之后,跨所有并行实例的状态的每个实例都是相同的。

有关BroadcastState的详细信息,请查看this文档。

答案 1 :(得分:0)

它们是不同的概念,BroadcastState是一个存储概念,Broadcast()是一个操作,目的是为你构建BroadcastStream。