java.lang.OutOfMemoryError:PYSPARK

时间:2018-04-30 11:04:05

标签: apache-spark pyspark spark-dataframe postgresql-9.4

我的Spark工作方案是连接到PostgreSQL数据库,从PSQL读取数据并在读取数据后执行聚合。在这个过程中,我能够成功地建立数据库连接,同时从我正面临的表中选择行

  

错误:java.lang.OutOfMemoryError java堆空间

  

错误:java.lang.OutOfMemoryError:超出GC开销限制

要解决堆空间问题,我在spark-defaults.conf文件中添加了以下配置。这很好用

spark.driver.memory 1g

为了解决超出GC开销限制的问题,我在下面添加了配置

spark.executor.memory 1g
spark.executor.extraJavaOptions Xmx1024m
spark.dirver.maxResultSize 2g

这些配置在100%的情况下仍然无法正常工作我面临同样的问题。我也沿着这个

  

PSQL错误:org.postgresql.util.psqlexception内存不足检索查询结果

我在处理具有巨大行数的表时遇到这些问题,即news_mentions表有4 540 092条记录,表的大小为5 476 MB。因此,需要花费更多时间来执行必须在几秒钟内完成的火花工作。

这是我的实际代码。

from pyspark.sql import SparkSession
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql import HiveContext

from pyspark.sql import DataFrameReader


sc = SparkContext()

sqlContext = SQLContext(sc)
sqlContext = HiveContext(sc)

input_media_source = " Times of India"

# Connecting to news_mentions table
df1 = sqlContext.read.format("jdbc").option("url", "jdbc:postgresql://localhost:5432/testdb").option("dbtable", "news_mentions").option("user", "postgres").load()
df1.createOrReplaceTempView("news_mentions")
news_mentions_DF = sqlContext.sql("SELECT * FROM news_mentions")

news_mentions_DF.show()

我在执行show()时遇到GC限制超出错误。如何以高性能快速运行我的pyspark工作而没有任何错误?

注意:我正在使用spark-submit命令运行我的pyspark作业,而不启动任何独立的群集模式。

我的火花版本 - 2.2.0与python版本 - 3.5.2

0 个答案:

没有答案