在哪种情况下,flink 中的 BroadcastConnectedStream 真的很有帮助?



在哪种情况下,flink 中的 BroadcastConnectedStream 真的很有帮助?

一个澄清的小例子会有所帮助。

我写了一些例子,你可以在这里找到:

  1. https://github.com/ververica/flink-training-exercises/blob/master/src/main/java/com/ververica/flinktraining/examples/datastream_java/broadcast/BroadcastState.java
  2. https://training.ververica.com/exercises/nearestTaxi.html
  3. https://training.ververica.com/exercises/ongoingRides.html
  4. https://training.ververica.com/exercises/taxiQuery.html

通常,每当需要在整个群集中通信某些内容时,广播状态都很有用。大多数数据源将被分区,以便它们可以由单独的实例并行处理 - 但全局需要一些信息,如货币汇率,阈值或机器学习模型。如果全局有用的数据是静态的,则可以简单地从文件加载它,但如果需要在运行时动态更新它,则使用广播流是有意义的。

除了 David 提到的之外,如果你有一个与广播流连接的键控流,那么在KeyedBroadcastProcessFunctionprocessBroadcastElement()方法中,你可以迭代所有键控流状态,这通常不是你在 Flink 运算符中可以做的事情。有关更多详细信息,请参阅广播状态模式。

最新更新