主页 > 新闻资讯 > 大数据培训:Spark RDD的管理与操作

大数据培训:Spark RDD的管理与操作

作者:张老师 浏览次数: 2021-04-22 17:06
前面我们已经对Spark RDD的概念及特征做了基本的介绍,了解了基本的概念之后,RDD的管理和操作,在Spark框架当中又是如何去运行和操作的呢?今天的大数据培训分享,我们就来对Spark RDD的管理与操作,做一个基本的讲解。

大数据培训:Spark RDD的管理与操作

RDD管理

RDD是一个分布式数据集,即数据分布存储在多台机器上,每个RDD的数据都以Block的形式存储于多台机器上。

在Spark任务运行时,Driver节点的BlockManagerMaster保存Block的元数据,并且管理RDD与Block的关系。

Executor会启动一个BlockManagerSlave,管理Block数据并向BlockManagerMaster注册该Block

当RDD不再需要存储的时候,BlockManagerMaster将向BlockManagerSlave发送指令删除相应的Block。

RDD操作

RDD提供了一组丰富的操作来操作这些数据,这种操作叫做算子。比如map、flatMap、filter、join、groupBy、reduceByKey等。

RDD分类,分为创建算子、转换、缓存、执行。

Transformation:转换算子,这类转换并不触发提交作业,完成作业中间过程处理。

Action:行动算子,这类算子会触发SparkContext提交Job作业。

RDD的算子分类

①transformation(转换)

根据已经存在的rdd转换生成一个新的rdd,它是延迟加载,不会立即执行。

例如:map/flatMap/reduceByKey等。

②action(动作)

它会真正触发任务的运行,将rdd的计算的结果数据返回给Driver端,或者是保存结果数据到外部存储介质中。

例如:collect/saveAsTextFile等。

RDD的依赖关系

RDD和它依赖的父RDD的关系有两种不同的类型,窄依赖(narrow dependency)和宽依赖(wide dependency)。

窄依赖

窄依赖指的是每一个父RDD的Partition最多被子RDD的一个Partition使用。窄依赖我们形象的比喻为独生子女。

哪些算子操作是窄依赖:

map/flatMap/filter/union等等。

所有的窄依赖不会产生shuffle。

宽依赖

宽依赖指的是多个子RDD的Partition会依赖同一个父RDD的Partition。宽依赖我们形象的比喻为超生。

哪些算子操作是宽依赖:

reduceByKey/sortByKey/groupBy/groupByKey/join等等。

所有的宽依赖会产生shuffle。

另外,需要注意,join分为宽依赖和窄依赖,如果RDD有相同的partitioner,那么将不会引起shuffle,这种join是窄依赖,反之就是宽依赖。

RDD lineage(血统)

RDD只支持粗粒度转换,即只记录单个块上执行的单个操作。将创建RDD的一系列Lineage(即血统)记录下来,以便恢复丢失的分区。

RDD的Lineage会记录RDD的元数据信息和转换行为,lineage保存了RDD的依赖关系,当该RDD的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。

关于大数据培训,Spark RDD的管理与操作,以上就为大家做了基本的介绍了。RDD作为Spark的核心基础数据结构,对于计算场景下的各种运行机制,都是需要基于RDD去进行的。成都加米谷大数据,专业大数据培训机构,大数据开发,数据分析与挖掘,零基础班本月正在招生中,课程大纲及预约试听可联系客服!
热点排行
推荐文章
立即申请>>