我对Spark中RDD的作用域感到困惑。根据此线程的说法,无论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()
...
< p > newRdd
会存在全局命名空间中吗?还是只能在myFun
的环境中访问?
如果它只能在myFun
的环境中访问,那么在myFun
执行完毕后,Spark会自动取消对newRdd
的持久化吗?