Итак, после нескольких дней изучения и тестирования, я наконец понял, что ни одна из параллельных настроек задания или отправки заданий в разных потоках не является решением.
Единственное рабочее решение - создание разных потоков для каждого (или группы) разделов темы .
Коэффициент параллелизма в kafka - это раздел. И Spark (и kafka) обладает способностью читать только из определенных разделов. Поэтому, если в нашем разделе есть 4 темы, я делю свою работу Spark на 4 разные работы, каждая из которых слушает (назначает) один раздел, но все они погружаются в одну цель.
Так что теперь, если одна работа занятапри длительном процессе другие задания (здесь 3) все еще могут обрабатывать данные из назначенных им разделов, и им не нужно ждать завершения процесса в других разделах.
Конфигурация подобна приведенной ниже:
assign: {"topic-name":[0,1,2]}
вместо
subscribe: "topic-name"
Обратите внимание на конфигурационную структуру, это должен быть допустимый JSON и список тем должен быть указан в строке через запятую (недиапазон поддержки или исключить)