我很担心RDD在Spark中的范围。
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
吗?
答案 0 :(得分:3)
是的,当RDD被垃圾收集时,它是无人值守的。所以在myFun之外,newRdd是无人值守的(假设你没有返回它,也没有派生的rdd),你也可以检查这个answer。