我对RDD在Spark中的作用域感到困惑。
根据this thread
因此,例如,如果我定义了一个带有在其中创建的新rdd的函数(例如,python代码)
# there is an rdd called "otherRdd" outside the function
def myFun(args):
...
newRdd = otherRdd.map(some_function)
newRdd.persist()
...
newRdd
是否将存在于全局 namespace 中?还是仅在myFun
环境内可见?如果仅在
myFun
环境内可见,则在myFun
完成执行后,Spark会自动将unpersist
变成newRdd
吗? 最佳答案
是的,当RDD被垃圾收集时,它是持久的。因此,在myFun之外,newRdd是不持久的(假设您不返回它也不是派生的rdd),则还可以检查此answer。
关于python - Spark的 `persist`或 `cache`的范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38292621/