开发者学堂课程【大数据实时计算框架Spark快速入门:持久化策略_缓存优化_3】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/100/detail/1654
持久化策略_缓存优化_3
package com.bjsxt.spark;
import org.apache.spark. SparkConf;
import org.apache.spark.api.java. JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
public class TeststorageLevel {
public static void main(String[] args) {
SparkConf conf = new SparkConf().setMaster("local").setAppName("TestStorageLevel" );
JavaSparkContext sc = new JavaSparkContext(conf);
//当RDD会被复用的时候通常我们就要使用持久化策略
// 1,持久化策略黑太认的是MEMORY_ONLY
//2,如果内存有些吃紧,可以选择MEMORY_ONLY_SER
//3,当我们的数据想要做一定的容错可以选择使用_2
//4,如果我们的中间结果RDD计算代价比较大,那我们可以选择MEMORY_AND_DISK
//MEMORY_ONLY说白了就是存不下就不存了
//MEMORY_AND_DISK如果内存存不下会存在本地磁盘空间
JavaRDD text = sc.textFile("NASA_access_log_Aug95");
text = text.cache();
//没有做持久化的时候
// 1569898
// cost: 3236
/ / 1569898
/ /cost: 702
使用Memory_Only持久化策略
// 1569898
//cost: 3233
// 1569898
// cost: 724
// 1569898
// cost: 49
long starttime = System.currentTimeMillis();
long count = text.count();
System.out.println(count) ;
long endtime = System.currentTimeMillis();
System.out.print1n( "cost: "+(endtime-starttime));
long starttime2 = System.currentTimeMillis();
long count2 = text.count();
System.out.println(count2);
long endtime2 = System.currentTimeMillis();
System.out.print1n("cost: "+(endtime2-starttime2)) ;
sc.close();