У меня есть Spark Cluster (Автономный кластер, всего 4 рабочих - каждый работник имеет 16 ядер. Всего 64 ядра в кластере)
Я принимаю потоковые данные из Kafka и обрабатываю их в Spark 2.1 с использованием структурированного потокового вещания.
Мои начальные разделы kafka - 20, которые я перераспределяю на 64, чтобы использовать все 64 ядра. Это отлично работает
Проблема в том, что само перемешивание занимает много времени (например, 40 секунд для 480 записей размером 203 КБ). Очень редко время составляет менее 40 секунд, но в основном это 40 секунд.
Фактическое вычисление составляет около 25-30 секунд, поэтому случайное время приводит к замедлению конвейера.
Я не уверен, почему на перемешивание записи для такого меньшего количества данных уходит 40 секунд.
Я уже использую KryoSerializer для перетасовки, но пока безрезультатно.
Посоветуйте пожалуйста?