我的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