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 安装错误:没有名为“pyspark”的模块

Pyspark:将 sql 查询转换为 pyspark?

Pyspark - ImportError:无法从“pyspark”导入名称“SparkContext”

Pyspark:基于所有列减去/差异 pyspark 数据帧

在 PySpark 的两个不同 pyspark.sql.dataframes 中的两列中创建一个 pyspark.sql.dataframe

pyspark:在日期和时间上重新采样 pyspark 数据帧