Spark持久化策略

spark持久化策略_缓存优化
persist、cache都是持久化到内存
缓存策略缓存

 


StorageLevel
_useDisk:是否使用磁盘
_useMemory:是否使用内存
_useOffHeap:不用堆内存,找tackyon
_deserialized:不序列化(序列化可理解为压缩,节省内存磁盘空间,可是消耗CPU)
_replication:副本数量 默认1份优化

默认持久化:只持久化到内存。
MEMORY_ONLY:有多少存多少,没存进来的从新算
只存入内存,假设RDD1的数据为1T,内存大小为512G,那么会将RDD中的512G放入内存,下一步操做使用RDD1的数据,生成RDD2,先去内存中找RDD1的数据,会发现存入内存的512G数据,进行计算后生成RDD2,可是RDD1中还有512G数据没有存入内存,生成RDD2的操做会查找RDD1的依赖,若是RDD1以前的RDD有作缓存,那么再缓存中读取,若是没有作缓存,再找以前的RDD,若是都没有作缓存的话,直接去HDFS中读取数据从新计算,最终生成RDD2。spa

MEMORY_AND_DISK:内存不够用了就落地到本地磁盘,假设RDD1的数据为1T,内存大小为512G,那么会将RDD中的512G放入内存,剩余的512G会落地到磁盘中。生成RDD2的时候一部分从内存中读取,一部分从磁盘中读取。
若是计算时间较长,中间结果算起来比较昂贵,此时M_A_D比较合适blog

能存在内存中的就尽可能存在内存中,若是内存紧张,那就序列化一次M_O_SER内存

相关文章
相关标签/搜索