Spark的`persist`或`cache`的作用范围

6
我对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的持久化吗?

1个回答

5

是的,当RDD被垃圾回收时,它会被取消持久化。所以在myFun之外,newRdd是未被持久化的(假设您没有返回它或其派生的rdd),您也可以查看这个答案


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接