zoukankan      html  css  js  c++  java
  • 【Spark】RDD的依赖关系和缓存相关知识点


    RDD的依赖关系

    RDD和它依赖的父RDD的关系有两种不同的类型,即窄依赖(narrow dependency)宽依赖(wide dependency)
    在这里插入图片描述

    宽依赖

    宽依赖指的是子RDD中的数据来源于父RDD中的多个分区,其实就是产生了shuffle

    窄依赖

    窄依赖指的是子RDD中的数据来源于父RDD当中的一个分区,也即没有产生shuffle

    血统

    Lineage —— 根据rdd之间的依赖关系,将依赖关系给记录下来叫做血统。
    比如:

    rdd1 ==> rdd2 ==> rdd3 ==> rdd4
    记录下来每一个rdd的父rdd是谁,也记录下来每一个rdd的子rdd是谁,可以帮助我们做容灾


    RDD缓存

    概述

    Spark速度非常快的原因之一,就是在不同操作中可以在内存中持久化或者缓存数据集。当持久化某个RDD后,每一个节点都将把计算分区结果保存在内存中,对此RDD或衍生出的RDD进行的其他动作中重用。这使得后续的动作变得更加迅速。RDD相关的持久化和缓存,是Spark最重要的特征之一。可以说,缓存是Spark构建迭代式算法和快速交互式查询的关键。

    缓存方式

    通过查看StorageLevel的源码可以拿到

    object StorageLevel {
      //不缓存
      val NONE = new StorageLevel(false, false, false, false)
      //只在硬盘缓存
      val DISK_ONLY = new StorageLevel(true, false, false, false)
      //在硬盘缓存两份
      val DISK_ONLY_2 = new StorageLevel(true, false, false, false, 2)
      //只在内存缓存
      val MEMORY_ONLY = new StorageLevel(false, true, false, true)
      //在内存缓存两份
      val MEMORY_ONLY_2 = new StorageLevel(false, true, false, true, 2)
      //在内存序列化缓存
      val MEMORY_ONLY_SER = new StorageLevel(false, true, false, false)
      //在内存序列化缓存两份
      val MEMORY_ONLY_SER_2 = new StorageLevel(false, true, false, false, 2)
      //同时在内存和硬盘缓存
      val MEMORY_AND_DISK = new StorageLevel(true, true, false, true)
      //同时在内存和硬盘缓存两份(推荐)
      val MEMORY_AND_DISK_2 = new StorageLevel(true, true, false, true, 2)
      //同时在内存和硬盘序列化缓存
      val MEMORY_AND_DISK_SER = new StorageLevel(true, true, false, false)
      //同时在内存和硬盘序列化缓存两份
      val MEMORY_AND_DISK_SER_2 = new StorageLevel(true, true, false, false, 2)
      //对外内存
      val OFF_HEAP = new StorageLevel(false, false, true, false)
      ......
    }
    

    两种方法:
    1.cache(),其实底层就是调用了persist,将数据仅仅的放到内存里面去,放一份
    2.persist()
     (1)无参,也是将只在内存中缓存一份数据
     (2)带StorageLevel参数,一般选择MEMORY_AND_DISK_2

  • 相关阅读:
    iOS UITextField 设置内边距
    在网页中嵌入任意字体的解决方案
    基数等比,确定进制
    改善CSS编码的5个在线幻灯片教程
    head区的代码详解
    一个简单的、循序渐进的CSS幻灯片教程
    功能强大易用的Web视频播放器——Flowplayer(使用方法及演示)
    CSS:区分IE版本的三个方法
    CSS书写标准及最佳实践
    Sliding Photograph Galleries
  • 原文地址:https://www.cnblogs.com/zzzsw0412/p/12772391.html
Copyright © 2011-2022 走看看