Spark Direct Streaming - использовать одно и то же сообщение у нескольких потребителей.

Как потреблять Kakfa topic messages в нескольких потребителях, использующих Direct Stream approach?

Является ли это возможным? Поскольку прямой поток не имеет подхода Consumer Group концепция.

Что произойдет, если я пройду group.id как кафкапарамс для метода Direct Stream? Код ниже работает with group.id в качестве Kafka Params также without group.id,

Образец кода:

val kafkaParams = Map(
  "group.id" -> "group1", 
  CommonClientConfigs.SECURITY_PROTOCOL_CONFIG -> sasl,
  ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG -> "org.apache.kafka.common.serialization.StringDeserializer",
  ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG -> "org.apache.kafka.common.serialization.StringDeserializer",
  "metadata.broker.list" -> brokerList,
  "zookeeper.connect" -> zookeeperURL
)

val dStream = 
  KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](
    ssc, kafkaParams, topicSet
  ).map(_._2)

1 ответ

Решение

Ничего не происходит, метод прямой потоковой передачи Sparks вообще не учитывает параметр id группы, поскольку использует нижний уровень SimpleConsumer, Вы не можете использовать одну и ту же тему в разных потоках прямого захода в Spark. Вы можете перейти к более старому подходу, основанному на приемнике, который использует группы.

Другие вопросы по тегам