Pyspark: контейнер вышел с ненулевым кодом выхода 143 - PullRequest
0 голосов
/ 03 апреля 2020

Я видел различные темы по этой проблеме, но приведенные решения не работают в моем случае.

Среда с pyspark 2.1.0, Java 7 и имеет достаточно памяти и ядер.

Я запускаю задание spark-submit, которое имеет дело с Json файлами, задание отлично работает с размером файла <200 МБ, но если его больше, чем с ошибкой для <strong>Контейнер завершился с ненулевым значением код выхода 143 , затем я проверил журналы пряжи и там была ошибка java .lang.OutOfMemoryError: Запрашиваемый размер массива превышает ограничение виртуальной машины

, поскольку файл json не является в формате, который можно непосредственно прочитать, используя spark.read. json () . Первым шагом в приложении является чтение json в виде текстового файла в rdd для применения map и flatMap для преобразования в требуемый формат. затем с помощью spark.read. json (rdd) для создания кадра данных для дальнейшей обработки, код ниже

def read_json(self, spark_session, filepath):
        raw_rdd = spark_session.sparkContext.textFile(filepath)
        raw_rdd_add_sep =  raw_rdd.map(lambda x:x.replace('}{','}}{{'))
        raw_rdd_split = raw_rdd_add_sep.flatMap(lambda x:x.split('}{'))
        required_df = spark_session.read.json(raw_rdd_split)
        return required_df

Я попытался увеличить накладные расходы памяти для исполнителя и драйвера, который сделал Не помогите с использованием опций spark.driver.memoryOverhead , spark.executor.memoryOverhead

Также я включил опции Off-Heap spark.memory .offHeap.enabled и установите значение spark.memory.offHeap.size

Я попытался установить параметр памяти JVM с помощью spark.driver.extraJavaOptions = -Xms10g

Таким образом, вышеупомянутые опции не работали в этом сценарии, некоторые из файлов Json имеют размер почти 1 ГБ, и мы должны обрабатывать ~ 200 файлов в день.

Может кто-нибудь помочь решить эту проблему, пожалуйста?

1 Ответ

1 голос
/ 08 апреля 2020
  1. Что касается "Container exited with a non-zero exit code 143", то, вероятно, это связано с проблемой памяти.

  2. Вам необходимо проверить в Spark UI, соответствуют ли установленные вами настройки эффект.

  3. Кстати, пропорция для executor.memory:overhead.memory должна составлять примерно 4:1

  4. Я не знаю, почему вы меняете JVM настройка spark.driver.extraJavaOptions=-Xms10g, я рекомендую использовать --driver-memory 10g instread. Например: spark-submit --driver-memory 10G (я помню, driver-memory иногда работает только с spark-submit)

  5. с моей точки зрения, вам просто нужно обновить четыре аргумента для подачи ресурсов вашей машины:

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