1、缓存
persist =>storage level
对运算中间数据持久化。
对数据缓存了,就会重用。
使用场景:步骤1=>步骤2=>【步骤3.1、步骤3.2】 就需要在步骤2进行缓存;每个分片都会进行缓存;有缓存就会有丢失,分片有可能丢失,会造成数据不完整,根据RDD的依赖机制,丢失的会从前边的步骤重新计算得来。
缓存场景
1、获取大量数据之后,例如:从日志文件获取了数据后,因为重新获取文件成本较高
2、经过了较长的链条计算后,重新在计算成本太高
3、单个步骤非常消耗资源:这样在这个资源后进行缓存
checkpoint
可以设置 checkpoint directory
4、checkpoint之前一般会进行缓存,checkpoint会改变RDD的依赖关系,RDD变成checkpoint RDD后,前边的所有RDD都会被移除,因为RDD的lazy,因此至少一次action之后才可以触发checkpoint。
5、引入checkpoint主要是为了避免缓存丢失造成的重新计算带来的资源消耗。
checkpoint是具体action之后,重新创建一个job来完成计算,checkpoint会产生一个新的job
6、checkpoint比缓存更可靠。