var rdd = sc.textFile("test")
rdd = rdd.persist(StorageLevel.MEMORY_ONLY)
val count = rdd.count() //或者其他操作
StorageLevel的构造函数:
class StorageLevel private(
private var _useDisk: Boolean, # 是否存入磁盘
private var _useMemory: Boolean, # 是否存入内存
private var _useOffHeap: Boolean, # 是否使用堆外内存
private var _deserialized: Boolean, # 是否不进行序列化
private var _replication: Int = 1 # 副本数(默认为1))
StorageLevel object中已经定义了几种代表RDD持久化的级别:
使用不同参数的组合构造的实例被预先定义为一些值,比如MEMORY_ONLY代表着不存入磁盘,存入内存,不使用堆外内存,不进行序列化,副本数为1,使用persisit()方法时把这些持久化的级别作为参数传入即可。
cache() = persist(StorageLevel.MEMORY_ONLY)
使用方法:
使用方法:
sc.setCheckpointDir("hdfs://...")
var rdd = sc.textFile("test")
rdd.checkpoint()
val count = rdd.count() //或者其他操作
checkpoint()执行原理:
error :
cache().count()
right :
rdd = rdd.cache()
rdd.count()