Pyspark:容器退出,退出代码为非零143

问题描述 投票:0回答:1

我在这个问题上见过各种话题,但是给出的解决方案在我的情况下不起作用。

该环境使用pyspark 2.1.0和Java 7,并具有足够的内存和Cores。

我正在运行一个处理Json文件的spark-submit作业,该作业在文件大小<200MB的情况下可以正常运行,但是如果它超过了它的大小,则失败了容器以非零退出代码143退出然后我检查了毛线记录,错误为java.lang.OutOfMemoryError:请求的数组大小超出VM限制

由于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]没有帮助。

还启用了堆外选项spark.memory.offHeap.enabled并设置值spark.memory.offHeap.size

我尝试使用spark.driver.extraJavaOptions = -Xms10g设置JVM内存选项

因此上述选项在这种情况下不起作用,一些Json文件接近1GB,我们每天应该处理约200个文件。

有人可以帮忙解决此问题吗?

我在这个问题上见过各种话题,但是给出的解决方案在我的情况下不起作用。该环境使用pyspark 2.1.0和Java 7并具有足够的内存和Cores。我正在火花-...

apache-spark pyspark rdd pyspark-dataframes spark-submit
1个回答
0
投票
  1. 关于"Container exited with a non-zero exit code 143",可能是由于内存问题。

© www.soinside.com 2019 - 2024. All rights reserved.