我在这个问题上见过各种话题,但是给出的解决方案在我的情况下不起作用。
该环境使用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)创建数据帧以进行进一步处理,代码如下]
,spark.executor.memoryOverhead]没有帮助。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.memory.offHeap.enabled并设置值spark.memory.offHeap.size
我尝试使用spark.driver.extraJavaOptions = -Xms10g设置JVM内存选项
因此上述选项在这种情况下不起作用,一些Json文件接近1GB,我们每天应该处理约200个文件。
有人可以帮忙解决此问题吗?
我在这个问题上见过各种话题,但是给出的解决方案在我的情况下不起作用。该环境使用pyspark 2.1.0和Java 7并具有足够的内存和Cores。我正在火花-...
关于"Container exited with a non-zero exit code 143"
,可能是由于内存问题。