为什么SparkSession初始化在单个应用程序中每次迭代都需要更长的时间?

时间:2017-04-16 08:02:37

标签: apache-spark

我使用spark进行批量分析。

我在拥有128G内存和32核CPU的独立Ubuntu服务器上运行Spark。无需任何其他配置参数即可运行spark-sumbit my_code.py

在while循环中,我启动SparkSession,分析数据,然后停止上下文,此过程每10秒重复一次。

while True:
    spark = SparkSession.builder.appName("sync_task").config('spark.driver.maxResultSize' , '5g').getOrCreate()
    sc = spark.sparkContext

    #some process and analyze

    spark.stop()

程序启动时,它可以正常工作。

但是当它工作了很多个小时。火花初始化需要很长时间。 只需初始化火花就可以花10到20秒。

那么问题是什么?

1 个答案:

答案 0 :(得分:1)

您使用单JVM local运行模式。我无法准确解释你的情况究竟发生了什么,但是看到这个单一的JVM在内存压力越来越大的情况下也就不足为奇了。它开始干净,随着时间的推移,Spark会在GCed之前留下一些临时对象。

我强烈建议附加jconsole以查看JVM指标并监控内存和CPU使用情况。