RDD 中的检查点机制的理解

RDD 中的检查点机制的理解概念理解检查点机制目的: 数据的持久化 + 安全性(HDFS)检查点机制适用场合:DGA 中的 Lineage过长在宽依赖上设置 检查点 更好检查点:将 RDD 的数据进行持久化到文件系统(HDFS)中分析问题:checkPoint 执行跟 cache 一样么?代码如下:(这里的 HDFS 路径注意自己本地 hosts 文件要有映射关系) @...
摘要由CSDN通过智能技术生成

RDD 中的检查点机制的理解

概念理解

检查点机制目的: 数据的持久化 + 安全性(HDFS)

检查点机制适用场合

  1. DGA 中的 Lineage过长
  2. 在宽依赖上设置 检查点 更好

检查点
将 RDD 的数据进行持久化到文件系统(HDFS)中

分析

问题:checkPoint 执行跟 cache 一样么?

代码如下:(这里的 HDFS 路径注意自己本地 hosts 文件要有映射关系)

  @Test
  def checkPointDemo(): Unit = {
    sc.setCheckpointDir("hdfs://master:9000/cache")
    val oldRDD = sc.makeRDD(1 to 2)
    val newRDD = oldRDD
      .map(_.toString + "[" + System.currentTimeMillis() + "]")

    newRDD.checkpoint()
    newRDD.foreach(println)
    newRDD.foreach(println)
    newRDD.foreach(println)
  }

结果:

1[1588064924441]
2[1588064924442]
1[1588064924730]
2[1588064924730]
2[1588064924730]
1[1588064924730]

分析:
发现前两次输出结果不一致,从cache理解角度,三次输出应该都是相同的。因此可以发现, checkPoint 执行方式跟 cache 是不同的

checkPoint 写入流程:

  1. 在遇到 Action 算子的时候,开始对数据进行处理,当数据结束后,才从后往前一次检查每一个 RDD ,看看需不需要进行 checkPoint ,如果需要,则执行下一步
  2. 在从头开始一次执行算子,知道设置了 checkPoint 的 RDD ,然后将数据保存在 HDFS 上(本质上是重新启动一个线程,进行写执行算子流程并存数据到HDFS上)
  3. 清楚 checkPoint 的 RDD 中所有依赖(断开父依赖)

小技巧:

一般在 checkPoint 之前都要进行 cache 或者 persist 。仔细想想哦

因为是创建新的线程,从头开始执行算子,当我们启用 cache 的时候,直接从 cache 中读取数据进行写入即可
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值