1.什么时候进行cache
(1)要求计算速度快
(2)集群的资源要足够大
(3)重要:cache的数据会多次触发Action
(4).先进行过滤,将过滤后的精准的数据存放到内存中再执行操作
//第一个参数,放到磁盘
//第二个参数,放到内存
//第三个参数,磁盘当中的数据不是以java对象的方式保存
//第死个参数,内存当中的数据是以java对象的方式保存
val MEMORY_AND_DISK =new StorageLevel(true,true,false,true)
OFF_HEAP:堆外内存(Tachyon,分布式内存存储系统)
spark可以将数据专门存放到spark提供的文件存储系统中

当我们在spark-shell执行操作如下

当我们第一次使用count求文件的长度时是很慢的,但第二次第三次执行count时速度会快很多,原因是cache将文件缓存在Executor上,当我们第二次调用它时会去内存上找数据。
但是我们的内存也不是无限大的,不可能存取太多的数据,当我们后面还要使用cache时,而内存已经存取很多不用的数据时可以使用unpersist清理内存
//Cached Partitions代表的是分区
//Fraction Cached代表的内存缓存文件的程度


注:该方法既没有生成新的RDD,也没有触发任务执行,只会标记该RDD的分区对应的数据(第一次触发Action)放入到内存
网友评论