rdd - SPARK 内存计算

标签 rdd in-memory

如果 Spark 在内存中计算所有 RDD 操作,那么将 RDD 持久保存在内存中有何区别?

最佳答案

我们可以持久化 RDD 以应用多个操作或稍后在 RDD 上调用操作。坚持后,RDD Spark 将跳过我计算执行操作所需的所有阶段。在spark中,所有转换都是惰性评估的,这意味着当您调用action时,所有转换都将实时执行,因此如果您第一次调用collect(),如果您再次运行另一个操作(例如count),它将执行所有转换并保留其中一个RDD。它不会重新执行所有转换,只是在持久化之前跳过所有转换并执行非持久化部分,例如

val list = sc.parallelize(List(1,23,5,4,3,2))
val rdd1 = list.map(_+1)
val rdd2 = rdd1.map(_+5).cache
rdd2.collect
rdd2.count

就像上面的示例一样,当 rdd2.collect 调用时,它将执行所有上述转换,因为您注意到 rdd2 已经缓存,因此现在当调用 count 时,它不会执行上述转换并使用持久的 rdd 来计算结果。

关于rdd - SPARK 内存计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40582679/

相关文章:

apache-spark - RDD、分区和节点之间的关系

apache-spark - Spark历史服务器即使持久化也不显示RDD

python - pySpark如何访问(键,元组)RDD中元组中的值(python)

redis - 如何在内存中持久化数据

python - 如何使用Python标准库在内存中构建大型XML文档?

php - 如何在 php 中构建内存中的服务器端缓存?

apache-spark - 溢出到磁盘并随机写入 Spark

scala - Spark 中的 RDD 持久化

delphi - 对内存中的文件进行排序

angular - InMemoryWebApiModule - 状态 : 404 - collection not found