开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段:Spark 原理_总体介绍_逻辑执行图】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/689/detail/12007
Spark 原理_总体介绍_逻辑执行图
逻辑执行图是 RDD 的一组组成,是 RDD 的转换,表示了数据的处理过程,将数据处理过程表示出来,可以将逻辑执行图转化为物理执行图,物理执行图在集群组成中运行。
逻辑执行图步骤:
1.RDD 如何生成
2.通过图了解 RDD 之间的关联
打开代码,可以看出使用 sc 创建 RDD,使用算子 flatmap 转成 splitRDD 的过程,textRDD 使用 flatmap 算子生成splitRDD 的关系,splitRDD 使用 map 算子生成 tupleRDD,而 tupleRDD 使用 reduceByKey 算子生成reduceRDD,reduceRDD 使用 map 算子生成 strRDD,逻辑执行图如下:
逻辑执行图负责 textRDD 如何转化为 splitRDD,splitRDD 存放哪些数据;splitRDD 如何转化为 tupleRDD,tupleRDD 中存放哪些数据,彼此之间存在依赖关系。tupleRDD 的-RDD 是 tupleRDD,是如何创建出来的,都由逻辑执行图得出,逻辑执行图描述数据如何流动,如何计算。
接下来改变代码,注释掉获取结果栏,编写 strRDD.todebugstring,其打印结果即为逻辑执行图,运行代码结果如下:
Todebugstring 是将 strRDD 预运行,取出 strRDD 所有的依赖关系,可以看到s trRDD 的对应关系。
也依赖了一个-RDD,是一个 reduceRDD,与代码相呼应,可以看到整个逻辑执行图通过 Todebugstring 打印出来,自上而下,最上面是离结果最近的 RDD,由副类计算得到。
打开笔记,可以看到逻辑执行图如下:
最左侧是 parallelcollectionRDD,是由 textRDD 通过 parallelize 来得到,再次通过 flatmap 算子得到新的 RDD,经过 map 算子生成另一个 mappartitionsRDD,再次经过 map 算子生成另一个 mappartitionsRDD,通过 reducebykey 算子得到 shuffledRDD,再次经过 map 得到 mappartitionsRDD,在 mappartitionsRDD 分区1和parallelcollectionRDD 的分区1紧密相联,通过父亲1计算生成。
逻辑生成图并不真实存在,代表 RDD一个依赖的链条,代表逻辑执行图,代表数据如何流转。