Я использую 10 r4.8xlarge с 32 кодами и 244 ГБ памяти и 100 ГБ SSD, мой ввод составляет 100 22 ГБ текстовых файлов.
Ниже приведены параметры моего исполнителя
--num-executors 59 --executor-cores 5 --executor-memory 37g
Я положилexecutor-cores 5, потому что кажется, что люди рекомендуют значение по умолчанию 5, а num-executors - floor(32/5) * 10 - 1
executor-memory - (244 / floor(32/5)) (1 - 0.07)
, как рекомендуется в этом руководстве по настройке
Использование вышеуказанногоКонфигурация, которую я получаю
org.apache.spark.memory.SparkOutOfMemoryError: error while calling spill() on
org.apache.spark.shuffle.sort.ShuffleExternalSorter@5eced6cb : No space left on device
Что соответствует этому коду
return spark.sparkContext
.textFile(myInputDir)
.repartition(15800) // experimentally tested to be a good partition base on 1 file, 1 file the best repartition is 3000
Поскольку каждая задача получает 37 ГБ, а это более 22 ГБ, я немного запутался в том, как может достичь искра SparkOutOfMemoryError
как просто чтение и перераспределение его на другие узлы.
Может кто-нибудь указать мне направление?