gpt4 book ai didi

python - 如何在 PySpark 中删除 RDD 以释放资源?

转载 作者:IT老高 更新时间:2023-10-28 20:54:09 34 4
gpt4 key购买 nike

如果我有一个不再需要的 RDD,如何从内存中删除它?以下是否足以完成这项工作:

del thisRDD

谢谢!

最佳答案

不,del thisRDD还不够,它只会删除指向 RDD 的指针。您应该调用 thisRDD.unpersist()删除缓存的数据。

供您引用,Spark 使用惰性计算模型,这意味着当您运行此代码时:

>>> thisRDD = sc.parallelize(xrange(10),2).cache()

您不会真正缓存任何数据,它只会在 RDD 执行计划中标记为“待缓存”。你可以这样检查:

>>> print thisRDD.toDebugString()
(2) PythonRDD[6] at RDD at PythonRDD.scala:43 [Memory Serialized 1x Replicated]
| ParallelCollectionRDD[5] at parallelize at PythonRDD.scala:364 [Memory Serialized 1x Replicated]

但是当你在这个 RDD 之上至少调用一次操作时,它会被缓存:

>>> thisRDD.count()
10
>>> print thisRDD.toDebugString()
(2) PythonRDD[6] at RDD at PythonRDD.scala:43 [Memory Serialized 1x Replicated]
| CachedPartitions: 2; MemorySize: 174.0 B; TachyonSize: 0.0 B; DiskSize: 0.0 B
| ParallelCollectionRDD[5] at parallelize at PythonRDD.scala:364 [Memory Serialized 1x Replicated]

您可以使用地址 http://<driver_node>:4040/storage 在 Spark UI 中轻松检查持久化数据和持久化级别.你会在那里看到 del thisRDD不会改变这个 RDD 的持久性,但是 thisRDD.unpersist()会取消持久化它,而您仍然可以在代码中使用 thisRDD(虽然它不再保留在内存中,并且每次查询时都会重新计算)

关于python - 如何在 PySpark 中删除 RDD 以释放资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27990616/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com