本文主要是介绍spark学习(2)之检查点和缓存机制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
检查点
检查点是spark的一种容错机制,它是在lineage过程中定时的把计算结果保存起来–》检查点目录
lineage (血统):spark执行周期
检查点目录分为:
本地目录:需要spark-shell启动到本地模式
hdfs目录:需要spark-shell启动到集群模式
因为我们只一般用到hdfs,所以我们下面示例只说到把检查点设置到hdfs中,
操作:
1、开启spark-shell
./bin/spark-shell --master spark://bigdata111:7077
2、设置检查点
sc.setCheckpointDir("hdfs://bigdata111:9000/spark/ckpt/0522")
3、我们从hdfs获取一个rdd
val rdd1=sc.textFile("hdfs://bigdata111:9000/input/data.txt")
4、我们希望在rdd1计算过程中各个阶段存储计算结果,我们需要给rdd1设置检查点
rdd1.checkpoint
5、然后我们给rdd1执行一个操作后,就报计算过程中的各阶段计算结果保存在了hdfs上
rdd1.count
6、然后我们就可以在检查点的目录中查看存储的结果了
缓存
我们可以把执行的结果放在缓存中,等下次执行同样的计算的时候就直接拿缓存中的结果
val rdd1=sc.textFile("/root/training/salse")
rdd1.count //正常执行计算操作
rdd1.cache //给rdd1设置缓存
rdd1.count //在这次执行的时候并不会很快,可能花费的时间更长,除了计算还需要把计算结果反倒缓存中
rdd1.count //等到这次执行的时候就很快了
我们使用cache和persisit设置缓存中,在内部cache也是调用的persist,默认设置缓存设置在缓存中,我们也给以给persist传一个参数StorageLevel来设置缓存的策略
这篇关于spark学习(2)之检查点和缓存机制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!