Spark RDD-2-持久化&容错机制

  1. rdd.cache
    1. 默认调用persisi,之缓存内存
    2. def cache(): this.type = persist()
  2. rdd.persist()
    1. def persist(): this.type = persist(StorageLevel.MEMORY_ONLY)
  3. rdd.unpersist(true)
    1. 手动释放缓存RDD占用的内存、磁盘存储资源
  4. rdd.checkpoint:容错
    1. checkpoint会把rdd序列化到checkpoint目录中,并丢弃rdd之前的依赖关系
    2. 实现:
      1. sc.setCheckpointDir("....")  // 检查点磁盘目录,一般是hdfs
      2. rdd.cache // 先缓存再checkpoint:如果rdd有依赖之前的rdd,checkpoint的时候会从头计算,浪费资源,做了重复的工作
      3. rdd.checkpoint // 设置检查点
      4. rdd.collect // action操作之后才真正的开始计算RDD并保存到检查点
    3. 应用场景:一般对于做了大量迭代计算的重要阶段做checkpoint,使这个点的rdd成为顶层父rdd,恢复时只需要恢复该rdd,不用重新计算
      1. 比如迭代1000次,第998从失败了,正好再997次checkpoint了,此时恢复会很快。

猜你喜欢

转载自blog.csdn.net/qq_20245089/article/details/84706409