Интеграция Spark + Kafka - отображение разделов Kafka на разделы RDD
У меня есть пара основных вопросов, связанных с потоковой передачей искр
[Пожалуйста, дайте мне знать, если на эти вопросы были даны ответы в других сообщениях - я не смог найти ни одного]:
(i) Является ли в Spark Streaming количество разделов в СДР по умолчанию равным количеству рабочих?
(ii) В прямом подходе к интеграции Spark-Kafka количество созданных разделов RDD равно количеству разделов Kafka. Правильно ли считать, что каждый раздел RDD i
будет сопоставлен с тем же рабочим узлом j
в каждой партии DStream
? то есть сопоставление раздела рабочему узлу основано исключительно на индексе раздела? Например, может ли раздел 2 быть назначен работнику 1 в одной партии и работнику 3 в другой?
заранее спасибо
1 ответ
i) параллелизм по умолчанию - это число ядер (или 8 для мезо), но количество разделов зависит от реализации входного потока
ii) нет, отображение индексов разделов на рабочие узлы не является детерминированным. Если вы запускаете kafka на тех же узлах, что и ваши искровые исполнители, предпочтительным местом для запуска задачи будет узел лидера kafka для этого раздела. Но даже тогда задача может быть запланирована на другом узле.