Spark的“持久性”或“缓存”的范围

时间:2016-07-10 13:54:09

标签: python apache-spark scope rdd

我很担心RDD在Spark中的范围。

根据this thread

  

RDD是否被缓存是RDD对象的可变状态的一部分。如果你调用rdd.cache,它将被标记为从那时开始缓存。您访问它的范围无关紧要。

所以,如果我定义了一个内部创建的新rdd函数,例如(python代码)

# there is an rdd called "otherRdd" outside the function

def myFun(args):
    ...
    newRdd = otherRdd.map(some_function)
    newRdd.persist()
    ...

newRdd是否会存在于全局命名空间中?或者它只在myFun的环境中可见?

如果仅在myFun的环境中可见,myFun完成执行后,Spark会自动unpersist newRdd吗?

1 个答案:

答案 0 :(得分:3)

是的,当RDD被垃圾收集时,它是无人值守的。所以在myFun之外,newRdd是无人值守的(假设你没有返回它,也没有派生的rdd),你也可以检查这个answer