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. Вы можете перейти к более старому подходу, основанному на приемнике, который использует группы.