Spark Persist与Cache

1.为什么要Cache / persist

由于spark中的RDD都是只读不可变的对象,也就是RDD的每一个transformation操作都会产生一个新的RDD。所以Spark任务中的一个优化原则就是避免创建重复的RDD而尽量复用同一个RDD。

当迭代使用到一个RDD的时候,我们不希望它重新从头trans一遍遍的计算,所以通过cache / persist的方法给他存到 内存/内&盘 中,下次使用,就直接拿出来就好了。

2.cache persist区别

cache调用了persist(),认的persist就是MEMORY_ONLY,所以cache就是存在内存里头,而persist有12种,选吧你。

3.persist的时候用什么级别好?

针对占用内存不是很大的中间计算结果优先采用MEMORY_ONLY,它的性能最好(前提是内存要足够),也是RDD的认策略。如果中间结果数据量稍大,可以采用MEMORY_ONLY_SER策略进行补充。

如果内存无法容纳中间数据,那么建议使用MEMORY_AND_disK_SER策略,该策略会优先将数据缓存在内存中,只有当内存不够时才会把数据写入磁盘。另外对于分布式任务,IO资源往往比cpu资源更加紧张,序列化后的数据可以节省内存和磁盘的空间开销。

一般不用disT_ONLY ,读起来慢的一匹,IO本来就很吃紧了,还添乱呢?

 

相关文章

1.SparkStreaming是什么?SparkStreaming是SparkCore的扩展A...
本篇内容介绍了“Spark通讯录相似度计算怎么实现”的有关知识...
本篇文章给大家分享的是有关如何进行Spark数据分析,小编觉得...
本篇内容主要讲解“Spark Shuffle和Hadoop Shuffle有哪些区别...
这篇文章主要介绍“TSDB的数据怎么利用Hadoop/spark集群做数...
本篇内容介绍了“Hadoop与Spark性能原理是什么”的有关知识,...