码迷,mamicode.com
首页 > 其他好文 > 详细

SparkRDD未持久化——持久化

时间:2019-01-20 18:56:55      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:star   tar   lis   就是   code   storage   安全性   col   ack   

RDD的持久化策略:

  cache、persist、checkpoint三种策略(持久化的单位是partition)


1、cache是persist的一个简化版,会将rdd中的数据持久化到内存中
  cache = persists(StorageLevel.MEMORY_ONLY) 不进行序列化
特点:
  cache的返回值 必须赋值给一个新的RDD变量, 在其他的job中直接使用这个RDD变量就可以
  cache是一个懒执行(其他两个也是懒执行),必须有action类的算子触发(也就是说,实现缓存要先触发一次)
  cache算子的后面不能立即添加action类算子
  var RDD= RDD.cache.foreach X 错误的,这样RDD 的结果就是遍历后的


2、persist手动指定持久化级别

 

3、checkpoint

  checkpoint会另启 一个job持久化到HDFS上 (安全性)、依赖关系会被切断。
  如果RDD转换很多,可以使用checkpoint。
  当使用checkpoint的时候可以先cache一把,然后再用checkpoint,这时候就会从内存中写入HDFS上(要快一些)

未持久化:

package spark;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;

public class Spark_Persist {

    public static void main(String[] args) {
        SparkConf sparkConf = new SparkConf().setMaster("local").setAppName("job_name");
        JavaSparkContext sc = new JavaSparkContext(sparkConf);
        
        JavaRDD<String> textFile = sc.textFile("E:/aa.txt");
         
        //未做持久化1
        //3123毫秒运行完8643490行
        long startTime = System.currentTimeMillis();
        long sumLine = textFile.count();
        long endtTime = System.currentTimeMillis();
        System.out.println((endtTime-startTime)+"毫秒运行完"+sumLine+"");
//未做持久化2 //2471毫秒运行完8643490行 long startTime1 = System.currentTimeMillis(); long sumLine1 = textFile.count(); long endtTime1 = System.currentTimeMillis(); System.out.println((endtTime1-startTime1)+"毫秒运行完"+sumLine1+""); } }

持久化:

package spark;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;

public class Spark_Persist {

    public static void main(String[] args) {
        SparkConf sparkConf = new SparkConf().setMaster("local").setAppName("job_name");
        JavaSparkContext sc = new JavaSparkContext(sparkConf);
        
        JavaRDD<String> textFile = sc.textFile("E:/aa.txt").cache();
         
        //持久化1
        //8382毫秒运行完8643490行
        long startTime = System.currentTimeMillis();
        long sumLine = textFile.count();
        long endtTime = System.currentTimeMillis();
        System.out.println((endtTime-startTime)+"毫秒运行完"+sumLine+"");
        
        //持久化2
        //168毫秒运行完8643490行
        long startTime1 = System.currentTimeMillis();
        long sumLine1 = textFile.count();
        long endtTime1 = System.currentTimeMillis();
        System.out.println((endtTime1-startTime1)+"毫秒运行完"+sumLine1+"");
        
    }

}

 

SparkRDD未持久化——持久化

标签:star   tar   lis   就是   code   storage   安全性   col   ack   

原文地址:https://www.cnblogs.com/ibigjy/p/10295629.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!