本文主要是介绍理解Spark-RDD持久化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.Spark中最重要的功能之一是跨操作在内存中持久化(或缓存)数据集。当数据持久保存在RDD时,每个节点都会存储它在内存中计算的任何分区,
并在该数据集(或从中派生的数据集)的其他操作中重用它们。这使得特性函数的Action更快(通常超过10倍)。缓存是迭代算法和快速交互式使用的关键工具。
2.可以使用persist()或cache()方法标记要保留的RDD。 第一次在动作中计算它,它将保留在节点的内存中。
Spark的缓存是容错的 - 如果丢失了RDD的任何分区,它将使用最初创建它的转换自动重新计算。
3.每个持久化RDD可以使用不同的存储级别进行存储。
例如,允许您将数据集保留在磁盘上,将其保留在内存中,但作为序列化Java对象(以节省空间),跨节点复制它。
通过将StorageLevel对象(Scala,Java,Python)传递给persist()来设置这些级别。
cache()方法是使用默认存储级别的简写,即StorageLevel.MEMORY_ONLY(在内存中存储反序列化的对象)。
完整的存储级别是:
Storage Level | Meaning |
MEMORY_ONLY | 将RDD存储为JVM中的反序列化Java对象。 如果RDD不适合内存,则某些分区将不会被缓存,并且每次需要时都会重新计算。 这是默认级别。</ |
这篇关于理解Spark-RDD持久化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!