Исключения Kafka при загрузке более 1 потребителя из одной группы с помощью потоковой передачи с искрой - PullRequest
0 голосов
/ 05 июля 2018

Я использую CreateDirectStream Kafka для создания потребителей из моего приложения потоковой передачи. когда я загружаю один экземпляр моего потребительского приложения, он работает отлично, однако, когда я запускаю второе приложение с той же группой потребителей , один из экземпляров получает исключение в течение нескольких секунд: ...IllegalStateException: No current assignment for partition testTpc1-1

Мой потребительский код довольно прост:

val stream = KafkaUtils.CreateDirectStream[String,String](
ssc,
PreferConsistent,
Subscribe[String,String](topics,kafkaParams)
)

У меня также есть enable.auto.commit, установленный на false

Как запустить несколько потребителей из одной и той же группы потребителей в одной теме кафки (с разделами)?

Кафка вер 0.10 Spark версия 2.2 Scala ver 2.11

ОБНОВЛЕНИЕ-РЕДАКТИРОВАНИЕ: Чтение ответа здесь: Spark Direct Streaming - использовать одно и то же сообщение у нескольких потребителей Я вижу, что direct streaming не не поддерживает несколько потребителей одной и той же группы. Я думаю, мне нужно найти другое решение. Поэтому мой следующий вопрос - предлагает ли DirectStream какое-либо решение для повышения производительности, чтобы компенсировать отсутствие возможности использовать несколько потребителей группы (т. Е. Делать ту же работу)?

1 Ответ

0 голосов
/ 05 июля 2018

Весь смысл Spark - позволить вам распараллеливать выполнение ваших данных без «ручной» балансировки нагрузки. Группы потребителей предназначены для противоположного случая - вы масштабируете «вручную», добавляя новые экземпляры в группу потребителей.

В действительности вопрос заключается в масштабируемости вашего приложения Spark - вам нужно добавить больше информации о том, какой тип обработки вы выполняете, какие у вас проблемы с производительностью, сколько разделов в вашей теме и т. Д.

...