Spark 原理_逻辑图_RDD 之间的关系_一对一 | 学习笔记

简介: 快速学习 Spark 原理_逻辑图_RDD 之间的关系_一对一

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段Spark 原理_逻辑图_RDD 之间的关系_一对一】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/689/detail/12012


Spark 原理_逻辑图_RDD 之间的关系_一对一


内容简介

一、了解逻辑图

二、RDD 之间有哪些依赖关系

三、总结

 

一、逻辑图是什么

逻辑图就是数据处理和存储的过程

1.RDD 的生成

2.RDD 的依赖关系

 

二、RDD 之间的依赖关系

image.png

1.如图所示,上方框表示的是 RDD 的变量,下方框表示的是 RDD 的类型,中间框代表的是 RDD 的计算

其中 HIDFS file 有三个分片(block),通过 textfile 算子生成了 textRDD

注释:为什么这里 textfile 算子生成了 mappartitionsRDD, 而非hadoopRDD?

因为 hadoopRDD 生成后,会再调用 map 算子进行转换操作,就生成了 mappartitionsRDD

HIDFS file 中的 block b1对应了 textRDD 中的分区 p1,通过计算进行转换

TextRDD HIDFS file 上读取内容后通过转换,拆分,展平后,生成 splitRDD,调用 flatmap 算子实现

SplitRDD 的分区数据经过 map 算子变成 tupleRDD 中对应的分区数据

探讨两个 RDD 之间的关系,应该从分区着手,一个 RDD 的分区与另一个 RDD 的分区之间是什么关系

其中 textRDDsplitRDD tupleRDD p1是一对一的关系。

2.什么是关系(依赖关系)?

从算子视角上来看,splitRDD 通过 map 算子得到了 tupleRDD,所以 splitRDD tupleRDD 之间的关系是 map

但是仅仅这样说,会不够全面,从细节上来看,RDD 只是数据和关于数据的计算,而具体执行这种计算得出结果的是一个神秘的其他组件,所以,这两个 RDD 的关系可以表示为 splitRDD 的数据通过 map 操作,被传入 tupleRDD,这是它们之间更细化的关系

但是 RDD 这个概念本身并不是数据容器,数据真正应该存放的地方是 RDD 的分区,所以如果把视角放在数据这一层面上的话,直接讲这两个 RDD 之间有关系是不科学的,应该从这两个 RDD 的分区之间的关系来探讨它们之间的关系

3.那这些分区之间是什么关系?
如果仅仅说 splitRDD tupleRDD 之间的话,那它们的分区之间就是一对一的关系

但是 tupleRDD reduceRDD 呢?

TupleDD 通过算子 reduceByKey 生成 reduceRDD,而这个算子是一个 shuffle 操作,shuffle 操作的两个 RDD 的分区之间并不是一对一,reduceByKey 的一个分区对应 tupleRDD 的多个分区

 

三、总结:

1.RDD 之间的依赖关系不是指 RDD 之间的关系,而是分区之间的关系

2.Map flatmap 这些算子的两个 RDD 之间的分区是 one to one

相关文章
|
16天前
|
分布式计算 Spark
【赵渝强老师】Spark RDD的依赖关系和任务阶段
Spark RDD之间的依赖关系分为窄依赖和宽依赖。窄依赖指父RDD的每个分区最多被一个子RDD分区使用,如map、filter操作;宽依赖则指父RDD的每个分区被多个子RDD分区使用,如分组和某些join操作。窄依赖任务可在同一阶段完成,而宽依赖因Shuffle的存在需划分不同阶段执行。借助Spark Web Console可查看任务的DAG图及阶段划分。
57 15
|
3月前
|
存储 分布式计算 并行计算
【赵渝强老师】Spark中的RDD
RDD(弹性分布式数据集)是Spark的核心数据模型,支持分布式并行计算。RDD由分区组成,每个分区由Spark Worker节点处理,具备自动容错、位置感知调度和缓存机制等特性。通过创建RDD,可以指定分区数量,并实现计算函数、依赖关系、分区器和优先位置列表等功能。视频讲解和示例代码进一步详细介绍了RDD的组成和特性。
|
4月前
|
消息中间件 分布式计算 Kafka
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
53 0
|
4月前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
133 0
|
4月前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
126 0
|
4月前
|
SQL 分布式计算 大数据
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
136 0
|
3月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
200 2
|
3月前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
233 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
3月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
192 1
|
3月前
|
分布式计算 大数据 OLAP
AnalyticDB与大数据生态集成:Spark & Flink
【10月更文挑战第25天】在大数据时代,实时数据处理和分析变得越来越重要。AnalyticDB(ADB)是阿里云推出的一款完全托管的实时数据仓库服务,支持PB级数据的实时分析。为了充分发挥AnalyticDB的潜力,将其与大数据处理工具如Apache Spark和Apache Flink集成是非常必要的。本文将从我个人的角度出发,分享如何将AnalyticDB与Spark和Flink集成,构建端到端的大数据处理流水线,实现数据的实时分析和处理。
99 1