缓存RDD的范围

时间:2015-10-02 15:53:51

标签: scala apache-spark

我想知道缓存的RDD的范围是什么。例如:

// Cache an RDD.
rdd.cache
// Pass the RDD to a method of another class.
otherClass.calculate(rdd) // This method performs various actions.
// Pass the RDD to a method of the same class.
calculate(rdd)            // This method also performs some actions.
// Perform an action in the same method where the RDD was cached.
rdd.count

在上面的例子中,RDD会实现一次吗? (它不需要重新创建?)缓存的范围是什么?

如果我不再需要它,我是否应该在使用它之后始终将RDD取消操作?

1 个答案:

答案 0 :(得分:2)

RDD是否被缓存是RDD对象的可变状态的一部分。如果您致电SuperClass,那么它将从那时开始标记为缓存。您访问它的范围无关紧要。

关于是否应该取消RDD:如果垃圾收集,RDD将自动取消。这是由你来决定是否很快就足够了。缓存占用执行程序上的空间,而自动清理是为响应驱动程序上的内存压力而发生的。