RDD的持久化

                  一、RDD的数据是过程数据

二、RDD的缓存

三、RDD的checkpoint

        1.checkpoint概念

        2.checkpoint与缓存区别


一、RDD的数据是过程数据

        RDD之间进行相互迭代计算(Transformation的转换),当执行开启后,新RDD的生成,代表老RDD的消失。

        RDD的数据是过程数据,只在处理的过程中存在,一旦处理完成,就不见了。

       这个特性可以最大化的利用资源,老旧RDD没用了就从内存中清理,给后续的计算腾出内存空间。但是如果需要多次使用某一个RDD时,只能根据血统关系从头开始计算,这就会导致计算资源的浪费。

二、RDD的缓存

        RDD的缓存技术: Spark提供了缓存APl,可以让我们通过调用API,将指定的RDD数据保留在内存或者硬盘上缓存的API

#RDD3被2次使用,可以加入缓存进行优化
rdd3.cache()  #缓存到内存中.
rdd3.persist(StorageLevel.MENORY_ONLY)       #仅内存缓存
rdd3.persist(storageLevel.MEMORY_ONLY_2)     #仅内存缓存,2个副本
rdd3.persist(StorageLevel.DISK_ONLY)         #仅缓存硬盘上
rdd3.persist(storageLevel.DISK_ONLY_2)       #仅缓存硬盘上,2个副本
rdd3.persist(storageLevel.DISK_ONLY_3)       #仅缓存硬盘上,3个副本
rdd3.persist(storageLevel.MENORY_AND_DISK)   #先放内存,不够放硬盘
rdd3.persist(StorageLevel.MENORY_AND_DISK_2) #先放内存,不够放硬盘,2个副本rdd3.persist(storageLevel.OFF_HEAP)          #堆外内存(系统内存)
#如上API,自行选择使用即可
#一般建议使用rdd3.persist(StorageLevel.MENORY_AND_DISK)
#如果内存比较小的集群,建议使用rdd3.persist(StorageLevel.DISK_ONLY)
#或者就别用缓存了 用CheckPoint
#主动清理缓存的API
rdd.unpersist()

        缓存特点:缓存技术可以将过程RDD数据,持久化保存到内存或者硬盘上

        但是,这个保存在设定上是认为不安全的.缓存的数据在设计上是认为有丢失风险的.所以,缓存有一个特点就是:其保留RDD之间的血缘(依赖)关系一旦缓存丢失,可以基于血缘关系的记录,重新计算这个RDD的数据。

        缓存如何丢失:

        1.在内存中的缓存是不安全的,比如断电\计算任务内存不足,把缓存清理给计算让路。

        2.硬盘中因为硬盘损坏也是可能丢失的。

三、RDD的checkpoint

        1.checkpoint概念

        CheckPoint技术,也是将RDD的数据,保存起来.但是它仅支持硬盘存储
        特点:
                ①它被设计认为是安全的

                ②不保留血缘关系

checkpoint示意图

        CheckPoint存储RDD数据,是集中收集各个分区数据进行存储。而缓存是分散存储。

#代码实现

#设置CheckPoint第一件事情,选择CP的保存路径
#如果是Local模式,可以支持本地文件系统,如果在集群运行,千万要用HDFS
sc.setcheckpointDir("hdfs:// node1:8020/output/bj52ckp")
#用的时候,直接调用checkpoint算子即可.
rdd.checkpoint()
        2.checkpoint与缓存区别

        ①CheckPoint不管分区数量卡少,风险是一样的,缓存分区越多,风险越高。

        ②CheckPoint支持写入HDFS,缓存不行, HDFS是高可靠存储, CheckPoint被认为是安全的。

        ③CheckPoint不支持内存,缓存可以,缓存如果写内存性能比CheckPoint要好一些。

        ④CheckPoint因为设计认为是安全的,所以不保留血缘关系,而缓存因为设计上认为不安全,所以保留。

#cache代码示例
#cording:utf8
import time

from pyspark import SparkConf,SparkContext
if __name__ == '__main__':
    conf = SparkConf().setMaster('local[*]').setAppName('test')
    sc = SparkContext(conf=conf)

    rdd1 = sc.textFile("../input/words.txt")
    rdd2 = rdd1.flatMap(lambda x : x.split(" "))
    rdd3 = rdd2.map(lambda x : (x,1))

    rdd3.cache()

    rdd4 = rdd3.reduceByKey(lambda a,b : a+b)
    print(rdd4.collect())

    rdd5 = rdd3.groupByKey()
    rdd6 = rdd5.mapValues(lambda x: sum(x))
    print(rdd6.collect())

    rdd3.unpersist()
    time.sleep(10000)
#checkpoint代码示例
#cording:utf8
import time

from pyspark import SparkConf,SparkContext
if __name__ == '__main__':
    conf = SparkConf().setMaster('local[*]').setAppName('test')
    sc = SparkContext(conf=conf)
    # 1.告知spark,开启checkpoint功能
    sc.setCheckpointDir('hdfs://pyspark01:8020/output/ckp')
    rdd1 = sc.textFile("../input/words.txt")
    rdd2 = rdd1.flatMap(lambda x : x.split(" "))
    rdd3 = rdd2.map(lambda x : (x,1))

    # 调用checkpoint API 保存数据即可
    rdd3.checkpoint()

    rdd4 = rdd3.reduceByKey(lambda a,b : a+b)
    print(rdd4.collect())

    rdd5 = rdd3.groupByKey()
    rdd6 = rdd5.mapValues(lambda x: sum(x))
    print(rdd6.collect())

    time.sleep(10000)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程简介 知识点介绍、代码演示、逻辑分析、灵活举例、使用图形的方式详细演示代码的流程和细节、整合企业级实战案例,全面讲解并突出重点,让学习也变成一种快乐。 课程亮点 1,知识体系完备,阶段学习者都能学有所获。 2,综合各种方式演示代码、分析逻辑,生动形象,化繁为简,讲解通俗易懂。 3,结合工作实践及分析应用,培养解决实际问题的能力。 4,使用综合案例来加强重点知识,用切实的应用场景提升编程能力,充分巩固各个知识点的应用。 5,整个课程的讲解思路是先提出问题,然后分析问题,并编程解决解题。 适用人群 1、对大数据感兴趣的在校生及应届毕业生。 2、对目前职业有进一步提升要求,希望从事大数据行业高薪工作的在职人员。 3、对大数据行业感兴趣的相关人员。 课程内容 第一章、Spark 基础环境 1.课程安排说明 2.Spark 框架概述 3.快速入门 4.Standalone集群及HA 5.Spark 应用开发入门 6.Spark 应用提交 7.Spark on YARN 8.应用部署模式DeployMode 第二章、SparkCore 模块 1.RDD 概念及特性 2.RDD 创建 3.RDD 函数及使用 4.RDD 持久化 5.案例:SogouQ日志分析 6.RDD Checkpoint 7.外部数据源(HBase和MySQL) 8.广播变量和累加器 9.Spark 内核调度 10.Spark 并行度 第三章、SparkSQL 模块 1.快速入门:词频统计 2.SparkSQL 概述 3.DataFrame 4.RDD与DataFrame转换 5.数据分析SQL和DSL 6.案例:电影评分数据分析 7.DataSet 8.外部数据源Exeternal DataSource 9.集成Hive 10.自定义函数UDF 11.分布式SQL引擎(spakr-sql和Spark ThriftServer) 12.Catalyst 优化器 第四章、离线综合实战 1.综合实战概述(需求、调研、业务) 2.环境搭建(大数据环境和应用开发环境) 3.项目初始化(工具类和属性文件) 4.广告数据ETL 5.Spark 分布式缓存 6.业务报表分析 7.应用执行部署 8.Oozie和Hue集成调度Spark 应用 第五章、SparkStreaming 模块 1.Streaming流式应用概述 2.Streaming 计算模式 3.SparkStreaming计算思路 4.入门案例 5.SparkStreaming工作原理 6.DStream及函数 7.集成Kafka 8.案例:百度搜索风云榜(实时ELT、窗口Window和状态State) 9.SparkStreaming Checkpoint 10.消费Kafka偏移量管理 第六章、StructuredStreaming模块 1.StructuredStreaming 概述(核心设计和编程模型) 2.入门案例:WordCount 3.输入源InputSources 4.Streaming Query 设置 5.输出终端OutputSink 6.集成Kafka(Source和Sink) 7.案例:物联网设备数据分析 8.事件时间窗口分析 9.Streaming Deduplication数据去重 10.Continues Processing连续流处理 第七章、实时综合实战 1.综合实战概述(需求、环境搭建和项目初始化) 2.模拟交易订单数据 3.数据实时ETL存储Kafka 4.实时应用停止 5.实时增量存储(存储HBase和Elasticsearch) 6.实时订单报表(Kafka-StructuredStreaming-Redis) 7.实时应用性能调优(数据本地性、反压机制、动态资源和日志管理)
本资源为网页,不是PDF Apache Spark 2.0.2 中文文档 Spark 概述 编程指南 快速入门 Spark 编程指南 概述 Spark 依赖 Spark 的初始化 Shell 的使用 弹性分布式数据集(RDDS) 并行集合 外部数据集 RDD 操作 RDD 持久化 共享变量 Broadcast Variables (广播变量) Accumulators (累加器) 部署应用到集群中 使用 Java / Scala 运行 spark Jobs 单元测试 Spark 1.0 版本前的应用程序迁移 下一步 Spark Streaming Spark Streaming 概述 一个简单的示例 基本概念 依赖 初始化 StreamingContext Discretized Streams(DStreams)(离散化流) Input DStreams 和 Receivers DStreams 上的 Transformations(转换) DStreams 上的输出操作 DataFrame 和 SQL 操作 MLlib 操作 缓存 / 持久化 CheckPointing 累加器和广播变量 应用程序部署 监控应用程序 性能 降低批处理的时间 设置合理的批处理间隔 内存 容错语义 迁移指南(从 0.9.1 或者更低版本至 1.x 版本) 快速跳转 Kafka 集成指南 DataFrames,Datasets 和 SQL Spark SQL 概述 SQL Datasets 和 DataFrames Spark SQL 入门指南 起始点 : SparkSession 创建 DataFrame 无类型 Dataset 操作(aka DataFrame 操作) 以编程的方式运行 SQL 查询 创建 Dataset RDD 的互操作性 数据源 通用的 Load/Save 函数 Parquet文件 JSON Datasets Hive 表 JDBC 连接其它数据库 故障排除 性能调优 缓存数据到内存 其它配置选项 分布式 SQL引擎 运行 Thrift JDBC/ODBC 运行 Spark SQL CLI 迁移指南 从 Spark SQL 1.6 升级到 2.0 从 Spark SQL 1.5 升级到 1.6 从 Spark SQL 1.4 升级到 1.5 从 Spark SQL 1.3 升级到 1.4 从 Spark SQL 1.0~1.2 升级到 1.3 兼容 Apache Hive 参考 数据类型 NaN 语义 Structured Streaming MLlib(机器学习) 机器学习库(MLlib)指南 ML Pipelines(ML管道) Extracting, transforming and selecting features(特征的提取,转换和选择) Classification and regression(分类和回归) Clustering(聚类) Collaborative Filtering(协同过滤) ML Tuning: model selection and hyperparameter tuning(ML调优:模型选择和超参数调整) Advanced topics(高级主题) MLlib:基于RDD的API Data Types - RDD-based API(数据类型) Basic Statistics - RDD-based API(基本统计) Classification and Regression - RDD-based API(分类和回归) Collaborative Filtering - RDD-based API(协同过滤) Clustering - RDD-based API(聚类 - 基于RDD的API) Dimensionality Reduction - RDD-based API(降维) Feature Extraction and Transformation - RDD-based API(特征的提取和转换) Frequent Pattern Mining - RDD-based API(频繁模式挖掘) Evaluation metrics - RDD-based API(评估指标) PMML model export - RDD-based API(PMML模型导出) Optimization - RDD-based API(最) GraphX(图形处理) Spark R 部署 集群模式概述 提交应用 Spark Standalone 模式 Spark on Mesos Spark on YARN Spark on YARN 上运行 准备 Spark on YARN 配置 调试应用 Spark 属性 重要提示 在一个安全的集群中运行 用 Apache Oozie 来运行应用程序 Kerberos 故障排查 Spark 配置 Spark 监控 指南 作业调度 Spark 安全 硬件配置 构建 Spark

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吗喽也是命

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值