Цепочка происходит автоматически во Flink, когда это возможно. Итак, в вашем примере достаточно просто использовать
val trainedStream = events.broadcast.map(new Mapper1(...)).map(new Mapper2(...))
Тогда я бы установил параллелизм на env
.
Кстати, вы уверены, что хотите транслировать события? A Datastream
обрабатывается параллельно по умолчанию. очень необычно для широковещательных событий, так как они будут обрабатываться несколько раз в соответствии с параллелизмом.
Дополнительный вопрос: является ли SubtaskIndex (полученный из RuntimeContext.getIndexOfThisSubtask) двух цепочечные подзадачи / параллельные экземпляры map1 и map2 одинаковы? Есть ли способ проверить это?
Индекс подзадачи одинаков для цепочечных операторов, поскольку они находятся в одной задаче (следовательно, они не могут даже иметь разные индексы). Вы можете видеть, что цепочка прошла успешно, если у вас есть задача mapper1 -> mapper2
.