Отладка конвейера Kafka, прочитав одну и ту же тему с двумя разными структурированными потоками искры

У меня есть тема Kafka, которая занимается потоковой передачей данных в моем производстве. Я хочу использовать тот же поток данных для цели отладки и не влиять на смещения для существующего конвейера.

Я помню, как в более ранних версиях для этой цели использовал создание различных групп потребителей, но я использую структурированную потоковую передачу Spark для чтения данных из kafka, и это не рекомендует использовать groupID при чтении данных из Kafka.




Ответы (1)


Каждый структурированный поток Spark создает уникальную группу потребителей, как вы можете видеть в код:

// Each running query should use its own group id. Otherwise, the query may be only assigned
// partial data since Kafka will assign partitions to multiple consumers having the same group
// id. Hence, we should generate a unique id for each query.
val uniqueGroupId = s"spark-kafka-source-${UUID.randomUUID}-${metadataPath.hashCode}"

Поскольку Spark управляет смещениями в своих файлах контрольных точек и никогда не фиксирует смещение обратно в Kafka, ваши два задания структурированной потоковой передачи не будут мешать друг другу в отношении их смещения. Оба будут работать совершенно независимо друг от друга, и вам нечего делать. Было бы полезно иметь отдельные каталоги контрольных точек для каждого задания потоковой передачи.

Я дал более подробный ответ об управлении смещением с помощью чтения заданий структурированной потоковой передачи искр из темы Kafka здесь.

person mike    schedule 16.10.2020