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

  • 相关阅读:
    SVN
    Oracle用户、权限、角色管理(转)
    X5学习笔记—给单元格添加颜色
    JdbcTemplae使用入门&&Spring三种连接池配置&&Spring配置文件引用外部properties文件
    依赖注入Bean属性
    IoC容器装配Bean(xml配置方式)(Bean的生命周期)
    Spring配置文件的读取
    Spring IoC反转控制的快速入门
    spring security 权限框架原理
    win7 开机,或重启自动启动 该文件下的
  • 原文地址:https://www.cnblogs.com/zzzsw0412/p/12772391.html
Copyright © 2011-2022 走看看