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

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

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

Что произойдет, если я передам group.id как kafkaparams для метода DirectStream? Приведенный ниже код работает 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)

person Shankar    schedule 10.02.2017    source источник


Ответы (1)


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

person Yuval Itzchakov    schedule 10.02.2017