spark缓存--cache和persist

import org.apache.spark.storage.StorageLevel
import org.apache.spark.{SparkConf, SparkContext}

object Cache {
  //spark的缓存
  //1.cache()
  //2.persist()
  // cache是persist的特殊情况。
  def main(args: Array[String]): Unit = {
    //创建spark
    val conf= new SparkConf().setAppName("Cache").setMaster("local[*]")
    val sc=new SparkContext(conf)

    sc.setLogLevel("WARN")

    //创建一个包含大量随机数的RDD
    val rdd=sc.parallelize(1 to 10000000).map(_=>util.Random.nextInt(100))

    //定义一个复杂的转换函数
    def complexTransformation(x:Int):Int={
      var result=x
      for(i<-1 to 1000){
        result=result*2%100
      }
      result
    }
//    val rdd1=rdd.map(complexTransformation)

    //缓存rdd
//    val rdd1=rdd.map(complexTransformation).cache()
    //persist()方法可以指定缓存的级别
    val rdd1=rdd.map(complexTransformation).persist(StorageLevel.DISK_ONLY)

    //第一次出发行动算子,计算并统计消耗的时间
    val startTime=System.currentTimeMillis()
    val rs1=rdd1.collect()
    val endTime=System.currentTimeMillis()
    println("第一次计算消耗的时间:"+(endTime-startTime)+"毫秒")

    //第二次出发行动算子,计算并统计消耗的时间
    val startTime1 = System.currentTimeMillis()
    val rs2 = rdd1.collect()
    val endTime1 = System.currentTimeMillis()
    println("第二次计算消耗的时间:" + (endTime1 - startTime1) + "毫秒")
  }
}

你可能感兴趣的:(spark,缓存,大数据)