我是靠谱客的博主 喜悦往事,最近开发中收集的这篇文章主要介绍Spark Core学习笔记6: RDD持久化,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.RDD持久化原理

  • Spark非常重要的一个功能特性就是可以将RDD持久化到内存中。当对RDD执行持久化操作时,每个节点都会将自己操作的RDD的partition持久化到内存中,并且在之后对该RDD的反复使用中,直接使用内存缓存的partition。

  • 要持久化一个RDD,只要调用cache()或persist()方法即可。在该RDD第一次被计算出来时,就会直接缓存在每个节点中。

  • cache()和persist()的区别在于,cache()是persist()的一种简化方式,cache()的底层就是调用的persist()的无参版本,同时就是调用persist(MEMORY_ONLY),将数据持久化到内存中。如果需要从内存中清除缓存,可以使用unpersist()方法

2.RDD持久化实战

  • Java版本实例

    public class Persist {
    public static void main(String[] args) {
    SparkConf conf = new SparkConf().setAppName("persist").setMaster("local");
    JavaSparkContext sc = new JavaSparkContext(conf);
    // cache()或者persist()的使用,是有规则的
    // 必须在transformation或者textFile等创建了一个RDD之后,直接连续调用cache()或persist()才可以
    // 如果你先创建一个RDD,然后单独另起一行执行cache()或persist()方法,是没有用的
    // 而且,会报错,大量的文件会丢失
    JavaRDD<String> lines = sc.textFile("C:\Users\admin\Desktop\spark.txt")
    .cache();
    long beginTime = System.currentTimeMillis();
    long count = lines.count();
    System.out.println("count: " + count);
    System.out.println("cost " + (System.currentTimeMillis() - beginTime) + " milliseconds");
    beginTime = System.currentTimeMillis();
    count = lines.count();
    System.out.println("count: " + count);
    System.out.println("cost " + (System.currentTimeMillis() - beginTime) + " milliseconds");
    sc.close();
    }
    }
    
  • Java版本运行结果

    count: 13
    cost 280 milliseconds
    count: 13
    cost 21 milliseconds
    
  • Scala版本

    object Persist {
    def main(args: Array[String]){
    val conf = new SparkConf().setAppName("persist").setMaster("local")
    val sc = new SparkContext(conf)
    // 持久化
    val lines = sc.textFile("C:\Users\admin\Desktop\spark.txt", 1).cache()
    var beginTime = System.currentTimeMillis()
    var count = lines.count()
    println("count: " + count)
    println("cost " + (System.currentTimeMillis()- beginTime) + " milliseconds")
    beginTime = System.currentTimeMillis()
    count = lines.count()
    println("count: " + count)
    println("cost " + (System.currentTimeMillis()- beginTime) + " milliseconds")
    }
    }
    
  • Scala版本运行结果

    count: 13
    cost 350 milliseconds
    count: 13
    cost 25 milliseconds
    

最后

以上就是喜悦往事为你收集整理的Spark Core学习笔记6: RDD持久化的全部内容,希望文章能够帮你解决Spark Core学习笔记6: RDD持久化所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部