首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >2021年大数据Spark(十八):Spark Core的RDD Checkpoint

2021年大数据Spark(十八):Spark Core的RDD Checkpoint

作者头像
Lansonli
发布2021-10-09 17:16:05
发布2021-10-09 17:16:05
5920
举报
文章被收录于专栏:Lansonli技术博客Lansonli技术博客

RDD Checkpoint

引入

   RDD 数据可以持久化,但是持久化/缓存可以把数据放在内存中,虽然是快速的,但是也是最不可靠的;也可以把数据放在磁盘上,也不是完全可靠的!例如磁盘会损坏等。

Checkpoint的产生就是为了更加可靠的数据持久化,在Checkpoint的时候一般把数据放在在HDFS上,这就天然的借助了HDFS天生的高容错、高可靠来实现数据最大程度上的安全,实现了RDD的容错和高可用。

在Spark Core中对RDD做checkpoint,可以切断做checkpoint RDD的依赖关系,将RDD数据保存到可靠存储(如HDFS)以便数据恢复;

API

第一步:sc.setCheckpointDir("HDFS目录") //HDFS的目录

第二步:rdd.checkpoint //后续会被多次频繁使用到的RDD/很重要的RDD

代码演示

代码语言:javascript
复制
package cn.itcast.core

import org.apache.spark.{SparkConf, SparkContext}

/**
 * RDD数据Checkpoint设置,案例演示
 */
object SparkCkptTest {
  def main(args: Array[String]): Unit = {
    val sparkConf: SparkConf = new SparkConf()
      .setAppName(this.getClass.getSimpleName.stripSuffix("$"))
      .setMaster("local[*]")
    val sc: SparkContext = new SparkContext(sparkConf)
    sc.setLogLevel("WARN")

    // 设置检查点目录,将RDD数据保存到那个目录
    sc.setCheckpointDir("./ckp")

    // 读取文件数据
    val datasRDD = sc.textFile("data/input/words.txt")

    // 调用checkpoint函数,将RDD进行备份,需要RDD中Action函数触发
    datasRDD.checkpoint()
    datasRDD.count()

    //再次执行count函数, 此时从checkpoint读取数据
    datasRDD.count()

    // 应用程序运行结束,关闭资源
    sc.stop()
  }
}

总结:持久化和Checkpoint的区别

问题:

缓存持久化 VS Checkpoint 开发中用哪个?

答案:

缓存持久化(保证后续再次使用的速度) + Checkpoint(保证安全)

区别:

 1)、存储位置

 Persist 和 Cache 只能保存在本地的磁盘和内存中(或者堆外内存);

Checkpoint 可以保存数据到 HDFS 这类可靠的存储上;

 2)、生命周期

Cache和Persist的RDD会在程序结束后会被清除或者手动调用unpersist方法;

Checkpoint的RDD在程序结束后依然存在,不会被删除;

 3)、Lineage(血统、依赖链、依赖关系)

Persist和Cache,不会丢掉RDD间的依赖链/依赖关系,因为这种缓存是不可靠的,如果出现了一些错误(例如 Executor 宕机),需要通过回溯依赖链重新计算出来;

Checkpoint会斩断依赖链,因为Checkpoint会把结果保存在HDFS这类存储中,更加的安全可靠,一般不需要回溯依赖链;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/04/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RDD Checkpoint
    • 引入
    • API
    • 代码演示
    • 总结:持久化和Checkpoint的区别
      • 问题:
      • 答案:
      • 区别:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档