Spark RDD 宽窄依赖

RDD 宽窄依赖

  • RDD之间有一系列的依赖关系, 可分为窄依赖和宽依赖

    • 窄依赖

      • 从 RDD 的 parition 角度来看
      • 父 RRD 的 parition 和 子 RDD 的 parition 之间的关系是一对一的 (或 者是多对一的)。
      • 不会有 shuffle 产生
    • 宽依赖
      • 父 RRD 的 parition 和 子 RDD 的 parition 之间的关系是一对多的
      • 会产生shuffle
  • 理解图

  • 对stage(阶段)划分的影响
    • DAGSchedular 根据依赖类型切割RDD划分stage, 如果是宽依赖, 就进行切割, 并且递归查找其所有父类RDD
    • 示意图:

原文地址:https://www.cnblogs.com/ronnieyuan/p/11727747.html

时间: 2024-10-10 16:12:28

Spark RDD 宽窄依赖的相关文章

Spark RDD基本概念、宽窄依赖、转换行为操作

目录 RDD概述 RDD的内部代码 案例 小总结 转换.行动算子 宽.窄依赖 Reference 本文介绍一下rdd的基本属性概念.rdd的转换/行动操作.rdd的宽/窄依赖. RDD:Resilient Distributed Dataset 弹性分布式数据集,是Spark中的基本抽象. RDD表示可以并行操作的元素的不变分区集合. RDD提供了许多基本的函数(map.filter.reduce等)供我们进行数据处理. RDD概述 通常来说,每个RDD有5个主要的属性组成: 分区列表 RDD是

Spark IMF传奇行动第22课:RDD的依赖关系彻底解密

版权声明:本文为博主原创文章,未经博主允许不得转载.作者:HaiziS 昨晚听了王家林老师的Spark IMF传奇行动第22课:RDD的依赖关系彻底解密,笔记如下: 1,窄依赖是指每个父RDD的一个Partition最多被子RDD的一个Partition所使用,例如map.filter.union等都会产生窄依赖: 2宽依赖是指一个父RDD的Partition会被多个子RDD的Partition所使用,例如groupByKey.reduceByKey.sortByKey等操作都会产生宽依赖 表面

spark-DAG,宽窄依赖,Stage,Shuffle

spark-DAG图 DAG(Directed Acyclic Graph)叫做有向无环图,原始的RDD通过一系列的转换就就形成了DAG,RDD之间的依赖关系形成了DAG图,而根据RDD之间的依赖关系的不同将DAG划分成不同的Stage. 宽窄依赖 窄依赖:父RDD和子RDD partition之间的关系是一对一的.或者父RDD一个partition只对应一个子RDD的partition情况下的父RDD和子RDD partition关系是多对一的.不会有shuffle的产生.父RDD的一个分区去

解析spark RDD

RDD是spark抽象的基石,可以说整个spark编程就是对RDD进行的操作 RDD是弹性的分布式数据集,它是只读的,可分区的,这个数据集的全部或者部分数据可以缓存在内存中,在多次计算间重用.所谓的弹性意思是:内存不够时可以与磁盘进行交换.这是RDD另一个特性:内存计算.就是将数据保存到内存中,同时为了解决内存容量大小的问题,他允许所有的数据我们可以自由的设置cache,和 是否cache RDD的特征: (1)有一个分片列表,就是这个RDD可以被切分,和hadoop一样,能被切分的数据才能并行

Spark RDD解密

1.  基于数据集的处理: 从物理存储上加载数据,然后操作数据,然后写入数据到物理设备; 基于数据集的操作不适应的场景: 不适合于大量的迭代: 不适合交互式查询:每次查询都需要对磁盘进行交互. 基于数据流的方式不能够复用曾经的结果或者中间的结果; 2. RDD弹性数据集 特点: A)自动的进行内存和磁盘数据的存储切换: B) 基于lineage的高效容错: C) Task如果失败会自动进行重试 D) Stage如果失败会自动进行重试,而且只会计算失败的分片; E) Checkpoint和pers

Spark RDD 核心总结

如何表示这样一个分区的,高效容错的而且能够持久化的分布式数据集呢?一般情况下抽象的RDD包含如下5大接口. 1)partition : 分区属性: 每个RDD包好多个分区, 这既是RDD的数据单位, 也是计算粒度, 每个分区在由一个Task线程处理. 在RDD创建的时候可以指定分区的个数, 如果没有指定, 那么, 默认分区的个数是CPU的核数. 每一块的分区对应一个内存上的block, 由BlockManager分配. Partition实现: partition 与 iterator 方法 R

Spark RDD Transformation 简单用例(一)

map(func) /** * Return a new RDD by applying a function to all elements of this RDD. */ def map[U: ClassTag](f: T => U): RDD[U]  map(func) Return a new distributed dataset formed by passing each element of the source through a function func.  将原RDD中的

RDD的依赖关系

RDD的依赖关系 Rdd之间的依赖关系通过rdd中的getDependencies来进行表示, 在提交job后,会通过在DAGShuduler.submitStage-->getMissingParentStages privatedefgetMissingParentStages(stage: Stage): List[Stage] = { valmissing =newHashSet[Stage] valvisited =newHashSet[RDD[_]] defvisit(rdd: RD

【spark 深入学习 03】Spark RDD的蛮荒世界

RDD真的是一个很晦涩的词汇,他就是伯克利大学的博士们在论文中提出的一个概念,很抽象,很难懂:但是这是spark的核心概念,因此有必要spark rdd的知识点,用最简单.浅显易懂的词汇描述.不想用学术话的语言来阐述RDD是什么,用简单.容易理解的方式来描述. 一.什么是RDD,RDD出现的背景 Mapreduce计算模型的出现解决了分布式计算的诸多难题,但是由于MR对数据共享的解决方案比较低效,导致MR编程模型效率不高,将数据写到一个稳定的外部存储系统,如HDFS,这个会引起数据复写.磁盘IO