1.概述
spark中最重要的功能之一是持久性(或缓存)一个数据集在内存中操作。当你持久化一个RDD,每个节点的任何一个分区都可以存储它。它可以在内存中计算或从另外一个数据集中恢复它(或从其派生的数据集)。这允许未来的actions要快得多(通常超过10倍)。缓存是一个关键的迭代算法和快速交互使用的工具。
你可以标记一个持久化一个RDD 使用persist()或 cache()方法。第一次在一个action中计算,它将保存在当前节点的内存中。spark的缓存是高度容错的——如果RDD的任意分区丢失,它将自动重新计算使用最初创建的 transformations。
此外,每个持久化RDD可以使用不同的存储级别去存储,允许你,例如,存在磁盘上的数据集,在内存中保存它但序列化的Java对象(节省空间),跨节点复制它,或者将它存储堆超光速粒子。这些通过设定的水平 StorageLevel对象(Scala,Java,Python) persist()。的 cache()方法是一个缩写使用默认的存储水平,这是 StorageLevel.MEMORY_ONLY(反序列化对象存储在内存)。完整的存储水平是: