【Spark Core】(三)RDD的持久化

1 RDD的数据是过程数据

  • RDD之间进行相互迭代计算(Transform转换),当执行开启后,新的RDD生成,老的RDD消失
  • RDD的数据是过程数据,只在处理的过程中存在,一旦处理完成就不见了。
  • 这个特性可以最大化利用资源,老的RDD没用了,就从内存中清除,给后续的计算腾出内存。

2 RDD缓存

  • RDD缓存:Spark提供了缓存API,可以通过调用API将指定的RDD数据保留在内存或硬盘上

  • 缓存在设计上认为是不安全的,会保存前置RDD的血缘关系

  • 缓存是分散存储的

    RDD3被两次使用,可以加入缓存进行优化

    rdd.cache() # 缓存到内存中
    rdd.persist(StorageLevel.MEMORY_ONLY) # 仅内存缓存
    rdd.persist(StorageLevel.MEMORY_ONLY_2) # 仅内存缓存,2副本
    rdd.persist(StorageLevel.DISK_ONLY) # 仅磁盘缓存
    rdd.persist(StorageLevel.DISK_ONLY_2) # 仅磁盘缓存,2副本
    rdd.persist(StorageLevel.MEMORY_AND_DISK) # 先缓存到内存,不够缓存到硬盘
    rdd.persist(StorageLevel.MEMORY_AND_DISK_2) # 先缓存到内存,不够缓存到硬盘,2副本
    rdd.persist(StorageLevel.OFF_HEAP) # 堆外内存(系统内存)

    一般建议使用rdd3.persist(StorageLevel.MEMORY_AND_DISK)

    内存较小的集群,建议使用rdd3.persist(StorageLevel.DISK_ONLY) 或使用CheckPoint

    主动清理缓存的API

    rdd.unperisist()

3 RDD CheckPoint

  • CheckPoint仅支持硬盘缓存(HDFS)

  • CheckPoint设计上认为是安全的,不保留血缘关系

  • CheckPoint是集中收集各个分区数据进行存储的

    设置CheckPoint第一件事:选择CP的保存路径

    如果是local模式,可以支持本地文件系统,如果在集群运行,务必用HDFS

    sc.setCheckpointDir("hdfs://node1:8020/output/aaa123ckp")

    使用时直接调用checkpoint算子即可

    rdd.checkpoint()

4 缓存 VS CheckPoint

  • CheckPoint不论分区数量多少,风险一致;缓存分区越多,风险越高
  • CheckPoint支持写入HDFS;缓存不支持。HDFS是高可靠存储,CheckPoint被认为是安全的
  • CheckPoint不支持内存;缓存支持。缓存如果写内存,性能比CheckPoint好
  • CheckPoint设计上认为是安全的,所以不保留血缘关系;缓存设计上认为是不安全的,所以保留血缘关系。
相关推荐
Elastic 中国社区官方博客4 小时前
快速 vs. 准确:衡量量化向量搜索的召回率
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索
qq_381338504 小时前
【技术日报】2026-03-18 AI 领域重磅速递
大数据·人工智能
电商API&Tina8 小时前
【电商API接口】开发者一站式电商API接入说明
大数据·数据库·人工智能·云计算·json
zxsz_com_cn8 小时前
设备预测性维护方案设计方向,如何设计设备预测性维护方案
分布式
武子康10 小时前
大数据-253 离线数仓 - Airflow 入门与任务调度实战:DAG、Operator、Executor 部署排错指南
大数据·后端·apache hive
guoji778811 小时前
2026年Gemini 3 Pro vs 豆包2.0深度评测:海外顶流与国产黑马谁更强?
大数据·人工智能·架构
TDengine (老段)11 小时前
TDengine IDMP 组态面板 —— 工具箱
大数据·数据库·时序数据库·tdengine·涛思数据
网络工程小王11 小时前
【大数据技术详解】——Kibana(学习笔记)
大数据·笔记·学习
zxsz_com_cn13 小时前
设备预测性维护方案设计的关键要素
大数据·人工智能
唐天下闻化13 小时前
连锁数字化改造8成翻车?三维避坑实录
大数据