一.cache 缓存的一些说明:
-
后进行cache前提:
- .要求的计算速度快,
- .集群的资源要足够大
- .重要:cache的数据会多次的触发Action,这个时候需要缓存,没这个前提用一次没必要缓存
- .先进行过滤,然后将缩小范围的数据在cache到内存,过滤拿掉一部分数据。
-
cache 底层调的方法
-
底层调用的是persist(),这个方法很灵活,里面可以传参数]
-
unpersist(true) 释放内存 ,false 边释放边往里面写
- StorageLevel.MEMORY_ONLY 这个参数重要,可以缓存磁盘和内存,还可以组合
- 参数含义:
第一个参数,放到磁盘
第二个参数,放到内存
第三个参数,磁盘中的数据,不是以java对象的方式保存
第四个参数,内存中的数据,以java对象的方式保存
val MEMORY_AND_DISK = new StorageLevel(true, true, false, true)
带2是可以存副本,防止丢失
- 缓存部分数据
如果你的内存小,但是数据还要多次触发提交action,需要缓存,这时候spark中的缓存方法可以缓存一部分,也可以提高效率
毕竟内存有限。