Pyspark: java.lang.OutOfMemoryError: превышен предел издержек GC - PullRequest
0 голосов
/ 29 августа 2018

Я относительно новичок в PySpark. Я пытался кэшировать данные 30 ГБ, потому что мне нужно выполнить кластеризацию на них. Таким образом, выполняя любое действие, как count изначально я получал немного heap space issue. Так что я погуглил и обнаружил, что увеличение памяти исполнителя / исполнителя сделает это за меня. Итак, вот моя текущая конфигурация

SparkConf().set('spark.executor.memory', '45G')
.set('spark.driver.memory', '80G')
.set('spark.driver.maxResultSize', '10G')

Но теперь я получаю это garbage collection issue. Я проверял ТАК, но везде ответы довольно расплывчаты. Люди предлагают поиграть с конфигурацией. Есть ли лучший способ выяснить, какой должна быть конфигурация? Я знаю, что это только исключение отладки, и я могу отключить его. Но все же я хочу немного освоить математику для расчета конфигураций самостоятельно.

Я сейчас на сервере с 256 ГБ ОЗУ. Любая помощь приветствуется. Заранее спасибо.

1 Ответ

0 голосов
/ 29 августа 2018

Сколько ядер у вашего сервера / кластера?

Эта ошибка GC говорит о том, что spark потратил не менее 98% времени сбора мусора во время выполнения (очистка неиспользуемых объектов из памяти), но при этом ему удалось освободить <2% памяти. Я не думаю, что этого можно избежать, как вы предлагаете, потому что это означает, что память почти заполнена и требуется сборка мусора. Подавление этого сообщения, скорее всего, вскоре приведет к ошибке нехватки памяти. <a href="https://plumbr.io/outofmemoryerror/gc-overhead-limit-exceeded" rel="nofollow noreferrer"> Эта ссылка даст вам подробную информацию о том, что означает эта ошибка. Решить его можно так же просто, как возиться с настройками конфигурации, как вы уже упоминали, но это также может означать, что вам нужны исправления кода. Помочь может уменьшение количества временных объектов, создание максимально возможной компактности вашего фрейма данных (например, кодирование строк в виде индексов) и выполнение объединений или других операций в нужное время (наиболее эффективное использование памяти). Посмотрите на вещание небольших информационных фреймов для объединений. Трудно предложить что-либо, не видя код., Как и этот ресурс.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...