什么时候手动指定persist
1. 我们发现计算步骤特别耗时,就在之前进行persist
2. 如果我们的计算链条特别长,就在之前进行persist
3. 在checkpoint之前,必须进行persist
checkpoint是属于transform操作,也就是说,在最后的action被触发后,计算完成,框架发现在中间有一个checkpoint的操作,于是会从开头到checkpoint的点再重新计算一次,这个比较耗时,所以我们需要在checkpoint之前进行一个persist操作
4. shuffle之后,进行persist,因为shuffle有网络传输,如果坏了,再传网络,比较费时
5. 在shuffle之前,系统框架默认会进行persist,把数据持久化到本地磁盘上
cache是persist的一种特殊情况,是把数据只持久化到内存,cache的存储级别是MEMORY_ONLY,persist根据指定的storageLevel,可以存在磁盘和内存中。他们都是transformation