Я использую автономный кластер Spark 2.3.1.Моя работа сводится к потреблению мини-пакетов Kafka каждые 2 минуты и записи агрегации в некоторый магазинРабота выглядит следующим образом:
val stream = KafkaUtils.createDirectStream(...)
stream.map(x=> Row(...))
.flatMap(r=> ... List[Row] )
.map(r=> (k,r))
.reduceByKey((r1, r2) => r)
.map { case (_, v) => v}
.foreachRDD { (rdd, time) => // write data}
Когда я смотрю в DAG, картина выглядит следующим образом
Мой вопрос - насколько я понимаю, искраследует использовать комбинатор для операции reduByKey, который должен значительно уменьшить размер перемешивания.Почему DAG не показывает это, и как я могу это проверить?
Дополнительный вопрос - если размер shuffle равен 2.5G, он попадает на диск?Какие свойства конфигурации / метрики я должен изучить, чтобы проверить, что задание настроено и работает оптимально.Для этой работы исполнители бегут с 10G памяти