В каком сценарии BroadcastConnectedStream в Flink действительно полезно? - PullRequest
1 голос
/ 05 февраля 2020

В каком сценарии BroadcastConnectedStream в flink действительно полезен?

Небольшой пример с пояснениями был бы полезен.

Ответы [ 2 ]

2 голосов
/ 05 февраля 2020

Я написал несколько примеров, которые вы можете найти здесь:

  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

В общем случае состояние широковещания полезно, когда вам нужно что-то сообщить по всему кластеру. Большинство источников данных будут разделены, так что они могут обрабатываться параллельно отдельными экземплярами, но некоторая информация необходима во всем мире, например, курсы валют или пороги, или модели машинного обучения. Если эти глобально полезные данные имеют статус c, вы можете просто загрузить их из файла, но если их нужно динамически обновлять во время выполнения, тогда имеет смысл использовать широковещательный поток.

1 голос
/ 06 февраля 2020

В дополнение к тому, что упомянул Дэвид, если у вас есть поток с ключами, который вы соединяете с широковещательным потоком, то в вашем методе KeyedBroadcastProcessFunction processBroadcastElement() вы можете перебрать все из состояние потока с ключом, что обычно не то, что вы можете сделать в операторе Flink. Подробнее см. Шаблон состояния вещания .

...