Pyspark - java.lang.OutOfMemoryError:写入 csv 文件时的 Java 堆空间
Posted
技术标签:
【中文标题】Pyspark - java.lang.OutOfMemoryError:写入 csv 文件时的 Java 堆空间【英文标题】:Pyspark - java.lang.OutOfMemoryError: Java heap space while writing to csv file 【发布时间】:2020-08-12 15:27:48 【问题描述】:当尝试使用以下代码写入 csv 文件时
DF.coalesce(1).write.option("header","false").option("sep",",").option("escape",'"').option("ignoreTrailingWhiteSpace","false").option("ignoreLeadingWhiteSpace","false").mode("overwrite").csv(filename)
我收到以下错误
ileFormatWriter.scala:169)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)
at org.apache.spark.scheduler.Task.run(Task.scala:121)
at org.apache.spark.executor.Executor$TaskRunner$$anonfun$10.apply(Executor.scala:408)
at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1360)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:414)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
... 1 more
Caused by: java.lang.OutOfMemoryError: Java heap space
有人可以建议解决方法吗?
【问题讨论】:
是否需要合并成1个文件?如果您可以处理多个文件,请删除coalesce(1)
属性
不,我不想要多个文件,这是使用 coalesce(1) 的原因
【参考方案1】:
尝试在您的 spark-submit 应用程序中增加 executor.memory
类似的东西
spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://207.184.161.138:7077 \
--executor-memory 20G \
--total-executor-cores 100 \
/path/to/examples.jar \
1000
【讨论】:
【参考方案2】:对我来说,添加下面的 spark 配置解决了这个问题
spark = SparkSession.builder.master('local[*]').config("spark.driver.memory", "15g").appName('sl-app').getOrCreate()
【讨论】:
以上是关于Pyspark - java.lang.OutOfMemoryError:写入 csv 文件时的 Java 堆空间的主要内容,如果未能解决你的问题,请参考以下文章
Pyspark - ImportError:无法从“pyspark”导入名称“SparkContext”
Pyspark:基于所有列减去/差异 pyspark 数据帧
在 PySpark 的两个不同 pyspark.sql.dataframes 中的两列中创建一个 pyspark.sql.dataframe