Как реализовать переменную, аналогичную аккумуляторам Spark в Apache Beam

#apache-beam

Вопрос:

В настоящее время я использую Apache Beam 2.29.0 в Spark. Мой конвейер использует данные из Kafka, для которых у меня есть пользовательский клиент KafkaConsumer, который Beam создает посредством вызова ConsumerFactoryFn. Мне нужно поделиться частью постоянных данных на время выполнения среди пользовательских потребителей Кафки. Это было бы очень просто в Spark, я бы создал переменную-накопитель, к которой будут иметь доступ все исполнители, а также драйвер. Поскольку Beam предназначен для работы на нескольких платформах Spark, Flink, Google Dataflow, он не предоставляет этой функции. Кто-нибудь знает, как это реализовать?

Ответ №1:

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

Вот пример того, как его использовать.