SparkRDD未持久化——持久化

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+"行");

    }

}

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

时间: 2024-11-05 13:03:55

SparkRDD未持久化——持久化的相关文章

使用Akka持久化——持久化与快照

前言 对于java web而言,一个用户的HTTP请求最终会转换为一条java线程处理.HTTP本身是无状态的,具体的请求逻辑一般也是无状态的.如果进程奔溃或者系统宕机,用户会发觉当前网页不可用之类的错误.虽然会影响一些用户体验,但是只要服务重启了,用户依然可以完成他的请求并满足其需要.但是有些情况下则势必会造成混乱甚至恐慌,例如跨行转账.用户从自己A银行的账户转账1万元至自己在B银行的账户,如果转出的动作成功了,但是转入却失败了,用户的心情是可想而知的,自己的财产不翼而飞了!一种解决的方式是引

分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)

上文<详细讲解redis数据结构(内存模型)以及常用命令>介绍了redis的数据类型以及常用命令,本文我们来学习下redis的一些高级特性. 回到顶部 安全性设置 设置客户端操作秘密 redis安装好后,默认情况下登陆客户端和使用命令操作时不需要密码的.某些情况下,为了安全起见,我们可以设置在客户端连接后进行任何操作之前都要进行密码验证.修改redis.conf进行配置. [[email protected] ~]# vi /usr/local/redis/etc/redis.conf ###

分布式缓存技术redis学习(三)——redis高级应用(主从、事务与锁、持久化)

  上文<详细讲解redis数据结构(内存模型)以及常用命令>介绍了redis的数据类型以及常用命令,本文我们来学习下redis的一些高级特性.目录如下: 安全性设置 设置客户端操作秘密 客户端授权方式 主从复制 主从复制的特点 主从复制的过程 配置主从服务器 事务与锁 事务开启与取消 乐观锁 持久化机制 RDB方式 AOF方式 发布以及订阅消息   安全性设置 设置客户端操作秘密 redis安装好后,默认情况下登陆客户端和使用命令操作时不需要密码的.某些情况下,为了安全起见,我们可以设置在客

redis主从复制故障恢复及持久化的意义

服务器配置:(centos7) 服务器IP 安装组件 节点 备注 192.168.27.210 redis-5.0.5 master 一主两从架构 192.168.26.112 redis-5.0.5 slave 192.168.26.206 redis-5.0.5 slave 最新版下载地址到各结点:Wget http://download.redis.io/releases/redis-5.0.5.tar.gz解压压缩包并配置:切换用户(生产环境少用ROOT用户操作)[[email prot

持久化和序列化的关系

Hibernate Hibernate是轻量级Java EE应用的持久层解决方案,Hibernate不仅管理者Java类到数据库表的映射(包括Java 数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度的缩短使用JDBC处理数据持久化的时间. 目前主流的数据库依然是关系型,如db2.oracle 对象关系数据库映射(ORM  object/relation mapping):Hibernate ORM,其作用就是去映射对象和关系型数据库的,以达到程序中的业务逻辑和数据访

50.性能调优之重构RDD架构以及RDD持久化

本文为<Spark大型电商项目实战> 系列文章之一,主要介绍重构RDD及持久化的原因及方法,并在代码中实现优化. RDD架构重构与优化 一种情况是从一个RDD到几个不同的RDD,算子和计算逻辑其实是完全一样的,结果因为人为的疏忽计算了多次,获取到了多个RDD.所以尽量去复用RDD,差不多的RDD可以抽取称为一个共同的RDD,供后面的RDD计算时,反复使用. 公共RDD一定要实现持久化 当第一次对RDD2执行算子,获取RDD3的时候,就会从RDD1开始计算,就是读取HDFS文件,然后对RDD1执

持久化机制(快照和aof)

数据持久化通俗讲就是把数据保存到磁盘上,保证不会因为断电等因素丢失数据.redis需要经常将内存中的数据同步到磁盘来保证持久化.redis支持两种持久化方式,一种是 Snapshotting(快照)也是默认方式,另一种是Append-only file(缩写aof)的方式snapshotting(快照)方式:这种方式是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb(redis的bin目录下).可以通过配置设置自动做快照持久化的方式.我们可以配置redis在n秒内如果超

Redis的多种持久化方式总结

话题:Redis的多种持久化方式: Redis是个支持持久化的内存数据库,redis需要经常将内存中的数据同步到磁盘来保证持久化. 1.RDB方式(Snapshotting默认快照方式): 1.1)配置: save 900 1       #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照. save 300 10      #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照. save 60 10000    #在60秒(1分钟)之后,如

ios学习笔记——数据持久化

一.沙盒 沙盒目录是一种数据安全策略,很多系统都采用沙盒设计. 沙盒目录设计的原理就是只能允许自己的应用程序访问目录,而不允许其他的应用访问. 1.Documents目录:该目录用于存储非常大的文件或非常频繁更新的数据,能够进行iTunes或iCloud的备份,获取目录位置的代码如下: 1 NSString * pathArr = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) la