py4j.protocol.Py4JJavaError: Произошла ошибка при вызове o243.trainRandomForestModel. : java.lang.OutOfMemoryError: пространство кучи Java [дубликат]

Не требуется javascript, и не требуется чрезмерно огромная максимальная высота. Вместо этого установите максимальную высоту в своих текстовых элементах и ​​используйте относительную единицу шрифта, такую ​​как rem или em. Таким образом, вы можете установить максимальную высоту, большую, чем ваш контейнер, избегая при этом задержки или «выскакивания», когда меню закрывается:

HTML


CSS

nav input + ul li { // notice I set max-height on li, not ul
   max-height: 0;
}

nav input:checked + ul li {
   max-height: 3rem; // a little bigger to allow for text-wrapping - but not outrageous
}

См. пример здесь: http://codepen.io/mindfullsilence/pen/DtzjE

158
задан Matteo Guarnerio 25 November 2015 в 11:14
поделиться

7 ответов

Местоположение для установки размера кучи памяти (по крайней мере, в искро-1.0.0) находится в conf / spark-env. Соответствующими переменными являются SPARK_EXECUTOR_MEMORY & amp; SPARK_DRIVER_MEMORY. Дополнительные документы содержатся в руководстве по развертыванию

Кроме того, не забудьте скопировать файл конфигурации на все подчиненные узлы.

2
ответ дан Amnon 25 August 2018 в 03:17
поделиться

Вы должны увеличить память драйвера. Думаю, в вашей папке $ SPARK_HOME / conf вы должны найти файл spark-defaults.conf, отредактировать и установить spark.driver.memory 4000m в зависимости от памяти вашего хозяина. Это то, что исправило проблему для меня, и все работает гладко

13
ответ дан blueskin 25 August 2018 в 03:17
поделиться

Чтобы добавить к этому вариант использования, который часто не обсуждается, я буду представлять решение при подаче приложения Spark через spark-submit в локальном режиме.

Согласно gitbook Освоение Apache Spark Яцек Ласковски :

Вы можете запустить Spark в локальном режиме. В этом нераспределенном режиме развертывания с одним JVM Spark генерирует все компоненты исполнения - драйвер, исполнитель, бэкэнд и мастер - в той же JVM. Это единственный режим, когда драйвер используется для выполнения.

Таким образом, если вы испытываете ошибки OOM с heap, достаточно скорректировать driver-memory, а не executor-memory.

Вот пример:

spark-1.6.1/bin/spark-submit
  --class "MyClass"
  --driver-memory 12g
  --master local[*] 
  target/scala-2.10/simple-project_2.10-1.0.jar 
41
ответ дан Brian Vanover 25 August 2018 в 03:17
поделиться
265
ответ дан Community 25 August 2018 в 03:17
поделиться

Вы должны настроить параметры настройки offHeap, как показано ниже:

`val spark = SparkSession
     .builder()
     .master("local[*]")
     .config("spark.executor.memory", "70g")
     .config("spark.driver.memory", "50g")
     .config("spark.memory.offHeap.enabled",true)
     .config("spark.memory.offHeap.size","16g")   
     .appName("sampleCodeForReference")
     .getOrCreate()`

Дать память памяти и память исполнительного устройства в соответствии с вашей оперативной памятью. Вы можете увеличить размер offHeap, если вы все еще сталкиваетесь с проблемой OutofMemory.

1
ответ дан pavan.vn101 25 August 2018 в 03:17
поделиться

В широком смысле, искры памяти JVM Executor можно разделить на две части. Spark memory и User memory. Это контролируется свойством spark.memory.fraction - значение находится между 0 и 1. При работе с изображениями или интенсивной обработке памяти в искровых приложениях рассмотрите возможность уменьшения spark.memory.fraction. Это сделает больше памяти доступной для вашей работы приложения. Spark может разливаться, поэтому он будет работать с меньшим объемом памяти.

Вторая часть проблемы - разделение работы. Если возможно, разделите свои данные на более мелкие куски. Для меньших данных, возможно, требуется меньше памяти. Но если это невозможно, вы жертвоприносите на память. Обычно один исполнитель будет запускать несколько ядер. Общая память исполнителей должна быть достаточной для удовлетворения требований к памяти всех параллельных задач. Если увеличение памяти исполнителя не является вариантом, вы можете уменьшить количество ядер на каждого исполнителя, чтобы каждая задача получала больше памяти для работы. Тест с 1 основным исполнителем, который имеет наибольшую возможную память, которую вы можете дать, а затем продолжать увеличивать ядра, пока не найдете лучший подсчет ядра.

2
ответ дан Rohit Karlupia 25 August 2018 в 03:17
поделиться

Посмотрите на сценарии запуска , там установлен размер кучи Java, похоже, что вы не устанавливаете это перед запуском рабочего Spark.

# Set SPARK_MEM if it isn't already set since we also use it for this process
SPARK_MEM=${SPARK_MEM:-512m}
export SPARK_MEM

# Set JAVA_OPTS to be able to load native libraries and to set heap size
JAVA_OPTS="$OUR_JAVA_OPTS"
JAVA_OPTS="$JAVA_OPTS -Djava.library.path=$SPARK_LIBRARY_PATH"
JAVA_OPTS="$JAVA_OPTS -Xms$SPARK_MEM -Xmx$SPARK_MEM"

Вы можете найти документацию для развертывания скриптов здесь .

14
ответ дан Tombart 25 August 2018 в 03:17
поделиться