zoukankan      html  css  js  c++  java
  • Saprk checkpoint、cache、persist的区别

    持久化类型 特点
    cache 默认存储级别为:
    RDD.cache():persist(StorageLevel.MEMORY_ONLY)
    Dataset.cache():MEMORY_AND_DISK
    persist 可以自定义存储级别,默认:MEMORY_AND_DISK
    可选:
    DISK_ONLY,
    DISK_ONLY_2,
    MEMORY_ONLY,
    MEMORY_ONLY_2,
    MEMORY_ONLY_SER,
    MEMORY_ONLY_SER_2,
    MEMORY_AND_DISK,
    MEMORY_AND_DISK_2,
    MEMORY_AND_DISK_SER,
    MEMORY_AND_DISK_SER_2
    NONE
    OFF_HEAP
    checkpoint 返回此数据集的检查点版本。
    检查点可用于截断此数据集的逻辑计划,
    这在计划可能指数增长的迭代算法中特别有用。
    它将被保存到用SparkContext#setCheckpointDir设置的检查点目录内的文件中。
    persist落盘不同的是,此处落盘在任务失败重启后可以重新使用,
    在迭代计算非常复杂的情况,适当checkpoint时非常有好处的

    注意:
    1. Dataset.cache()默认MEMORY_AND_DISK是因为重新计算基础表的内存中列表示是非常昂贵的。

    2. 至于persist基本就是内存、落地磁盘、是否序列化、是否备份的各种组合,

    3. MEMORY_AND_DISK*的落地磁盘是在内存不够的时候才部分落地磁盘,落盘部分会进行序列化

    4. DISK_ONLY*的落地磁盘是直接落盘,不在内存存储,落盘会进行序列化

    5. checkpoint会删除对此Dataset父Dataset的引用,依赖链会断掉,起到切断血缘的效果
    因为此时数据已经持久化到硬盘,不需要重新计算
    所以在对某个ds进行checkpoint时,建议先进行一次ds持久化否则在使用checkpoint时会开启一个计算,浪费资源。


    下面是存储级别的表,通过空间,cpu和性能的影响

    级别 内存使用 cpu时间 内存 磁盘 序列化 重新计算某些分区
    MEMORY_ONLY High Low Y N N Y
    MEMORY_ONLY_SER Low High Y N Y Y
    MEMORY_AND_DISK High Medium Some Some Some N
    MEMORY_AND_DISK_SER Low High Some Some Y N
    DISK_ONLY Low High N Y Y N

    使用cache、persist的好处

    • 减少计算开销:Spark的计算资源是非常宝贵的,所以通过复用计算可以减少计算开销
    • 时间效率:重用重复计算节省大量时间。 所以我们可以在相同时间内执行更多任务
  • 相关阅读:
    第二阶段团队冲刺第二天站立会议
    第二阶段冲刺第一天站立会议
    对身边常用的软件进行评价
    学习进度条
    进度条
    团队冲刺第四天站立会议
    用户模板及场景分析
    团队冲刺第一天战略会议
    团队冲刺第九天
    团队冲刺第八天
  • 原文地址:https://www.cnblogs.com/lillcol/p/14780237.html
Copyright © 2011-2022 走看看