为什么在Holden Karau的书《 Learning Spark》中将持久性当作动作来使用?

我正在阅读“学习火花”,并注意到这种代码:

val result = input.map(x => x * x)
result.persist(Storagelevel.DISK_ONLY)
println(result.count())
println(result.collect().mkString(","))

此代码是否真的保留result rdd?我以为在Spark中一切都是不可变的,但在这种情况下,看起来我们正在对result rdd进行突变。

这段代码应该不是这样写的吗? :

val result = input.map(x => x * x)
val persistedResult = result.persist(Storagelevel.DISK_ONLY)
println(persistedResult.count())
println(persistedResult.collect().mkString(","))

本书中还有更多这样的代码示例,这让我感到奇怪...

ilovemyf 回答:为什么在Holden Karau的书《 Learning Spark》中将持久性当作动作来使用?

与类型转换不同,persist()应用于数据集。这是因为persist实际上仅是这样的 marks 数据集。来自Spark Programming Guide

  

您可以使用persist()或cache()标记要保留的RDD   方法就可以了。第一次在动作中计算时,它将是   保留在节点上的内存中。

本文链接:https://www.f2er.com/3135147.html

大家都在问