0

У меня есть 5 режимов, каждый из которых имеет 8 ядер процессора и память 30 ГБ. У меня есть 5 ГБ данных1 и 65 ГБ данных2, поэтому мне нужно присоединиться к ним и сохранить файл s3 системы и я установить следующие параметры:Настройка искры Параметры для настройки производительности, outOfMemoryError Gc и GC предел превышен

--num-executors 4 --spark.driver.memory 8g --executor-cores 5 --executor-memory 27g --conf spark.yarn.executor.memoryOverhead=824m 

Но, я искал везде и пробовал разные параметры, все еще я получаю из памяти ошибки. Превышение верхнего предела Gc.

используется Кроме того, это в Java Код:

conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer"); 
conf.set("spark.kryo.registrator", AvgRegistrator.class.getName()); 
conf.set("spark.driver.maxResultSize", "5g"); 
conf.set("spark.broadcast.compress", "true"); 
conf.set("spark.shuffle.compress", "true"); 

Нет каких-либо решений в StackOverflow работают для меня. так может ли кто-нибудь дать мне лучшее решение, чтобы избавиться от этой проблемы.

Spark java.lang.OutOfMemoryError: Java heap space 

и некоторое время я получаю это:

java.lang.OutOfMemoryError: GC overhead limit exceeded 

ответ

1

Я хотел бы попробовать увеличить уровень paralellism (т.е. разделить ваши разделы на более мелкие).

Если в базовом хранилище имеется только несколько партитонов, вам необходимо вручную переразбить данные перед соединением (например, позвонив repartition() в свои наборы данных или RDD). Кроме того, установка свойства spark.default.parallelism может помочь, если вы используете RDD. Если вы используете Datasets, рассмотрите параметр spark.sql.shuffle.partitions, который определяет количество разделов после каждой операции тасования.

+0

Уже пробовал с различными разделами. не работает, :(Сколько разделов я должен выполнить для своих вышеперечисленных конфигураций? У меня есть 200 разделов всего 8 ГБ в первом наборе данных и 99 разделов на 65 ГБ данных в другом наборе данных. –

+0

Это звучит достаточно. вопрос с кодом и версией Spark, которую вы используете? –

+0

Кроме того, вы устанавливаете параметр 'spark.yarn.executor.memoryOverhead' равным значению, которое меньше, чем значение по умолчанию (равно execorMemory * 0.10). –

Смежные вопросы