Я видел различные темы по этой проблеме, но приведенные решения не работают в моем случае.
Среда с 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 файлов в день.
Может кто-нибудь помочь решить эту проблему, пожалуйста?