1.Spark中最重要的功能之一是跨操作在内存中持久化(或缓存)数据集。当数据持久保存在RDD时,每个节点都会存储它在内存中计算的任何分区,
并在该数据集(或从中派生的数据集)的其他操作中重用它们。这使得特性函数的Action更快(通常超过10倍)。缓存是迭代算法和快速交互式使用的关键工具。
2.可以使用persist()或cache()方法标记要保留的RDD。 第一次在动作中计算它,它将保留在节点的内存中。
Spark的缓存是容错的 - 如果丢失了RDD的任何分区,它将使用最初创建它的转换自动重新计算。
3.每个持久化RDD可以使用不同的存储级别进行存储。
例如,允许您将数据集保留在磁盘上,将其保留在内存中,但作为序列化Java对象(以节省空间),跨节点复制它。
通过将StorageLevel对象(Scala,Java,Python)传递给persist()来设置这些级别。
cache()方法是使用默认存储级别的简写,即StorageLevel.MEMORY_ONLY(在内存中存储反序列化的对象)。
完整的存储级别是: