我使用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秒。
那么问题是什么?
答案 0 :(得分:1)
您使用单JVM local
运行模式。我无法准确解释你的情况究竟发生了什么,但是看到这个单一的JVM在内存压力越来越大的情况下也就不足为奇了。它开始干净,随着时间的推移,Spark会在GCed之前留下一些临时对象。
我强烈建议附加jconsole以查看JVM指标并监控内存和CPU使用情况。