Spark 原理_物理图_案例总结 | 学习笔记

简介: 快速学习 Spark 原理_物理图_案例总结

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段Spark 原理_物理图_案例总结】学习笔记,与课程紧密联系,让用户快速学习知识。

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


Spark 原理_物理图_案例总结


内容简介

一、数据的流动过程

二、DAG Stage 的生成

 

在此之前我们学习了阶段如何划分,接下来会运行一个小案例,对之前的内容进行一个总结,首先我们会了解数据是如何流动的,以及分析一个小案例,在集群运行完以后,会有怎样的结构。

 

一、数据是如何流动的

Val sc = ...

Val textRDD = sc.parallelize(Seq(Hadoop Spark,hadoop flume,spark sqoop))

Val splitRDD = textRDD.flatMap(_.split(“ “))

Val tupleRDD = splitRDD.map((_,1))

Val reduceRDD = tupleRDD.reduceByKey(_+_)

Val strRDD = reduceRDD.map(item => s${item._}, ${item._2})

strRDD collect.foreach(item = println(item)) // 调用了 strrdd collect 方法,通过 action 算子获取数据

str 中调用了 collect,说明 collect 只是从 str 中获取数据

Collect 获取的数据称为 result,观看一下整体的流程

上述代码是这个章节一直使用的代码流程,如下是其完整的逻辑执行图

image.png

1.过程有两个

1)从右到左,rdd 数据的索取

2)从左到右,rdd 数据的给予

首先从 srerdd 出发,调用它的算子去获取数据,相当于在向 strrdd 要数据,由于 strrdd 重视没有数据的,所以 strrdd 要获取数据计算,StrRDD 通过 reduceRDD 获取数据,经过 map 计算,变成 strRDD 中的数据

ReduceRDD 是通过 tupleRDD 获取数据,经过 reducebykey 过程(shuffle 过程),变成 reduceRDD 中的数据

Stage0是一个单独的阶段,要保证 tuplerdd 中是有数据的

2.总结

1)数据的计算发生在调用 action RDD

2ResultRDD 是没有数据的话,找父类 RDD 获取数据

3)父类 RDD 再向上获取数据

Textrdd 先拿到数据,两个过程,从左到右,一步步传递数据,从右到左,一步步向前要数据

数据的计算发生在 strRDD 上,最先获取数据的为 textRDD

Stage 的划分,是从后往前,stage0stage1

以上就是整个 stage 的划分,可以将它想象成水流,打开水龙的的时候,需要 result,水从源头处 HIDFS 流过来,是 result 先需要水,这个时候水就从源头处流过来,经过 textrdd 的处理,splitrdd 的处理,tuplerdd 的处理,在tuplerdd reducerdd 之间建了一个水库,将数据传入水库在进入 reducerdd,后经过 strrdd ,进入 result,整个流程

 

二、DAG Stage 的生成

1.编辑代码

复制上述代码

输入

Scala>:paste

// Entering paste mode(ctrl.D to finish)

粘贴到此处

2. ctrl +D 执行

结果如下

image.png

查看划分的 stage

3.打开浏览器,输入 node014040/jobs/

image.png

4.点击 collect at <console>:32

image.png

5.点击 DAG 可视化

image.png

可以看到 stage0 stage1 与之间说的相反,在后面会将讲解到。

总结

数据计算发生在需要数据的地方,FinalRDD

第一个获取数据的 RDD FirstRDD

通过案例查看了 DAG 的生成,stage 的生成

相关文章
|
1月前
|
分布式计算 大数据 Java
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
49 5
|
1月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
49 3
|
1月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
60 0
|
1月前
|
分布式计算 大数据 Spark
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
40 1
|
1月前
|
分布式计算 Java 大数据
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
38 0
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
|
1月前
|
设计模式 数据采集 分布式计算
企业spark案例 —出租车轨迹分析
企业spark案例 —出租车轨迹分析
63 0
|
1月前
|
消息中间件 分布式计算 Kafka
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
55 0
|
1月前
|
SQL 分布式计算 大数据
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(一)
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(一)
29 0
|
1月前
|
存储 分布式计算 大数据
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(二)
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(二)
43 0
|
1月前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
42 0