rdd的持久化
说明
1.如果不使用持久化,那么每次调用collect,都会创建一个job每个 job 总是从它血缘的起始开始计算. 所以, 会发现中间的这些计算过程都会重复的执行.
2. 原因是因为 rdd记录了整个计算过程. 如果计算的过程中出现哪个分区的数据损坏或丢失, 则可以从头开始计算来达到容错的目的.
接下来我们来看看除了储存在内存中,还能储存在哪里!
Storage Level
聚合算子默认缓存
建议缓存还是要写的,养成习惯
默认进行缓存
第一次collect
第二次collect,就直接跳过了 默认缓存
checkpoint
checkpoint
检查点
他的功能和持久化一致
表现是不一样的
1.checkpoint,需要手动指定目录
2.checkpoint的时候,当第一个job执行完之后,spark内部会立即再起一个job,专门去做checkpoint
持久后会使用第一个job的结果进行持久化
3.checkpoint会切断他的血缘关系
持久化不会切断血缘关系
那我们做一个实验吧
如果checkpoints和cache一起用
建议checkpoints和cache一起使用