【摘要】:对于控制操作,一般是分为persist操作和checkpoint操作。需要注意的一点是,Spark RDD的持久化操作并没有在原来的RDD的基础上产生新的RDD,它只是改变了RDD的元数据信息。
对于控制操作,一般是分为persist操作(持久化操作)和checkpoint操作。下面我们分析一下这两种类型的操作。
在Spark中通过对RDD进行持久化操作可以实现RDD的容错,针对这一点Spark有多种缓存策略,既可以将RDD持久化在内存中,也可以持久化在磁盘中,后续的操作可以重复使用这些持久化的数据。需要注意的一点是,Spark RDD的持久化操作并没有在原来的RDD的基础上产生新的RDD,它只是改变了RDD的元数据信息。
1.持久化操作
(1)persist()方法是把RDD数据缓存到内存。
(2)persist(newlevel)方法会根据newLevel参数的实际值不同,把数据持久化到不同的存储介质中。(www.xing528.com)
(3)cache方法和不传参数的persist()方法功能一致,因为它的实现就是调用persist()方法,他们都是把RDD数据只缓存到内存中,如果数据溢出,数据将丢失。
(4)unPersis方法对RDD进行标记,解除它的持久化,原来存储在内存和磁盘的数据将被清除。
2.checkpoint操作
checkpoint是将RDD持久化在HDFS中,与persist(如果也持久化在磁盘上)的一个区别是checkpoint将会切断此RDD之前的依赖关系,而persist方法依然保留着RDD的依赖关系。Checkpoint的作用有以下两点:对于一个长时间运行的Spark程序,定期进行checkpoint操作能有效节省系统资源;checkpoint可以使Spark具有很强的容错能力。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。