Apache spark 为什么SparkSession初始化在单个应用程序中每次迭代花费的时间更长?

Apache spark 为什么SparkSession初始化在单个应用程序中每次迭代花费的时间更长?,apache-spark,Apache Spark,我使用spark进行批量分析 我在一个独立的Ubuntu服务器上运行Spark,它有128G内存和32核CPU。运行spark sumbit my_code.py,无需任何其他配置参数 在while循环中,我启动SparkSession,分析数据,然后停止上下文,此过程每10秒重复一次 while True: spark = SparkSession.builder.appName("sync_task").config('spark.driver.maxResultSize' , '5

我使用spark进行批量分析

我在一个独立的Ubuntu服务器上运行Spark,它有128G内存和32核CPU。运行
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()
当程序启动时,它工作正常

但是当它工作了很多小时。火花初始化需要很长时间。 只需初始化spark,就可以获得10或20秒的时间


那么问题出在哪里呢?

您使用单个JVM
本地运行模式。我不能确切地解释在您的情况下会发生什么,但是看到这个JVM越来越面临内存压力也就不足为奇了。它开始干净,随着时间的推移,Spark会在获得GCD之前留下一些临时对象


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

那么解决方案是什么,如果内存或CPU使用情况增加,我应该如何处理此问题?@JacekLaskowski(显然由OP打开)。@JacekLaskowski我应该在Jconsole中监视哪些指标的内存使用情况和CPU使用情况?