一.cache
将数据持久化到内存中去
注意:
1.cache是一个懒执行算子,必须有一个action类算子触发执行。
2.cache类算子的返回值必须复制给一个变量,在接下来的job中,直接使用这个变量就能读取到内存中缓存的数据。
3.cache类算子不能立即紧跟action类算子。紧跟action类算子之后,这个算子就不是RDD类型的变量,之后的RDD就拿不到这个变量了。
4.如果想释放掉缓存在内存中的数据,使用unpersisit算子,这个算子是Action类算子。
二.persist 算子
cache算子实际上就是persist算子的简化版
persist(StorageLevel.MEMORY_ONLY)=cache()
persist方法其他持久化级别
一种有16种常用的有
MEMORY_ONLY 和cache一样
MEMORY_AND_DISK_SER 会将RDD计算到数据序列化,内存放不了再放到磁盘
MEMORY_AND_DISK RDD先放到内存中,内存放不了再放到磁盘
持久化的单位是partition:每一个partition处理的数据不会一般存储到内存中一半存储在磁盘中