Spark持久化
在StorageLevel
这个类中,我们能看到Spark是如何持久化的
def persist(newLevel: StorageLevel)
def unpersist(blocking: Boolean = true)
在StorageLevel中定义的变量分别为
class StorageLevel private(
private var _useDisk: Boolean, //磁盘
private var _useMemory: Boolean, //内存
//JVM内存中tachyon(基于内存的分布式文件系统)
private var _useOffHeap: Boolean,
private var _deserialized: Boolean, //反序列化
private var _replication: Int = 1) //副本个数
extends Externalizable
什么情况下,RDD数据需要进行持久化呢???
场景一:某个RDD数据,被多次使用
重复RDD
场景二:某个RDD数据来自不易,使用超过1次
经过复杂的处理得到RDD
通常选择的策略
MEMORY_ONLY_2 -如果内存足够
MEMORY_AND_DISK_SER_2 -如果内存不够,先内存后磁盘,