У меня есть данные объемом 55 ГБ, которые необходимо обработать. Я запускаю Spark-shell на одной машине с 32 ядрами и 180 ГБ ОЗУ (без кластера). Поскольку это один узел, и драйвер, и рабочие находятся в одном процессе JVM и по умолчанию используют 514 МБ.
Я установил spark.driver.memory на 170G
spark-shell --driver-memory 170g
Я выполняю операцию map, за которой следует group_by, а затем agg и записываю в файл паркета. И он все еще застрял на
Есть ли способ оптимизировать производительность, изменив spark.executor.memory или изменив количество ядер, используемых вместо использования Master [*]? Как определить оптимальную настройку для данной задачи и размера данных? какие значения в файлах --conf мне нужно точно настроить?
Короче, как заставить Spark использовать все доступные ресурсы наилучшим образом?
top
или что-то в этом роде. Думаю, Spark по умолчанию использует все доступные ядра. Процесс может быть медленным из-за как медленного ввода-вывода при чтении этого большого блока данных, так и / или медленных вычислений из-за большого объема вычислений. - person mck   schedule 07.11.2020