Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 火花存储器泄漏_Python_Apache Spark_Memory Leaks_Pyspark - Fatal编程技术网

Python 火花存储器泄漏

Python 火花存储器泄漏,python,apache-spark,memory-leaks,pyspark,Python,Apache Spark,Memory Leaks,Pyspark,我使用的是spark 2.1,我在spark中遇到了内存泄漏,特别是在使用pyspark的函数时。我在一个循环中运行它,从中减去的数据帧最终应该达到0,但我看到的是驱动程序上的内存使用继续增加,直到它消失 用于计数中的行\u df.collect(): customer\u df=all\u grouped\u df.选择('name')。其中(all\u grouped\u df.customer==行['customer']) pre_count=所有_df.count() all_df=a

我使用的是spark 2.1,我在spark中遇到了内存泄漏,特别是在使用pyspark的函数时。我在一个循环中运行它,从中减去的数据帧最终应该达到0,但我看到的是驱动程序上的内存使用继续增加,直到它消失

用于计数中的行\u df.collect():
customer\u df=all\u grouped\u df.选择('name')。其中(all\u grouped\u df.customer==行['customer'])
pre_count=所有_df.count()
all_df=all_df.减去(客户_df)
post_count=所有_df.count()
差异计数=前计数-后计数
#做些别的事情
在我看来,
all_df=X
实际上并没有覆盖上一个对象?这是我能得出的唯一结论,因为
all_df
中的数据随着每个循环而减少

有没有办法解决这个问题,或者有其他方法来实现
减法功能

编辑:我只使用了减法函数(无计数)来运行它,它似乎没有泄漏任何东西。我想泄漏可能与我的运行方式有关。
count?

对于您的问题:

  • 当您对数据帧进行操作时,它正好生成一个新的数据帧。特别是行动方法

  • 我也感到不安。好吧,我猜你掉进了该死的spark开发者挖的两个陷阱里。数据沿袭会随着“all_df=all_df.substract”的执行而增加,每次创建新的df时,数据关系都会被扩展,而旧的关系不会因为引用它们而被删除


  • 因此,要么由于很长的数据沿袭而导致堆栈溢出,要么由于内存中保存的数据帧太多而导致内存激增。

    如果进行不计数的减法运算,你的意思是在循环中不计数还是根本不计数…甚至在循环外?根本不计数。如果没有计数,也就是说,没有动作…你在循环内做的任何事情都不会真正执行。尝试在循环外计数,看看是否得到想要的结果。我需要在循环内计数,至少在减法之后,才能完成我要完成的任务。我在一个新问题中添加了一个read to run示例。