千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:北京千锋IT培训  >  行业资讯  >  什么是DAG?DAG有向无环图实例讲解

什么是DAG?DAG有向无环图实例讲解

来源:千锋教育
发布人:qyf
时间: 2020-12-30 14:32:00 1609309920

  DAG(Directed Acyclic Graph)叫做有向无环图,Spark中的RDD通过一系列的转换算子操作和行动算子操作形成了一个DAG。DAG是一种非常重要的图论数据结构。如果一个有向图无法从任意顶点出发经过若干条边回到该点,则这个图就是有向无环图,具体如图1所示。

1

图1 DAG有向无环图

  从图1可以看出,4→6→1→2是一条路径,4→6→5也是一条路径,并且图中不存在从顶点经过若干条边后能回到该点。在Spark中,有向无环图的连贯关系被用来表达RDD之间的依赖关系。其中,顶点表示RDD及产生该RDD的操作算子,有方向的边表示算子之间的相互转化。

  根据RDD之间依赖关系的不同可以将DAG划分成不同的Stage(调度阶段)。对于窄依赖来说,RDD分区的转换处理是在一个线程里完成,所以窄依赖会被Spark划分到同一个Stage中;而对于宽依赖来说,由于有Shuffle的存在,所以只能在父RDD处理完成后,下一个Stage才能开始接下来的计算,因此宽依赖是划分Stage的依据,当RDD进行转换操作,遇到宽依赖类型的转换操作时,就划为一个Stage。Stage的具体划分如图2所示。

2

图2 Stage的划分

  在图2中,创建了三个RDD的实例A、C以及E。当RDD的实例A做groupByKey转换操作生成B时,由于groupByKey转换操作属于宽依赖类型,所以就把实例A划分为一个Stage,如Stage1;当实例C做map转换操作生成D, D与实例E做union转换操作生成F,由于map和union转换操作都属于窄依赖类型,因此不进行Stage的划分,而是将C、D、E、F加入到同一个Stage中;当F与B进行join转换操作时,由于这时的join操作是非协同划分,所以属于宽依赖,因此会划分为一个Stage,如Stage2;剩下的B和G被划分为一个Stage,如Stage3。

  如果大家正在学习IT知识或者是对IT知识比较感兴趣的话,都可以添加我们的官方qq群,不仅可以获得IT学习资料,并且群内还有专业的IT老师定期为大家解决学习所遇到的问题,想要学习的小伙伴,不要错过。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

抖音养号的正确方法,务必收藏!

2023-04-25

it行业是干什么的?学it要注意什么?

2023-03-09

学软件开发需要什么基础?

2023-02-06

最新文章NEW

编程都需要学什么?理论和方法很重要

2023-02-06

北京编程培训机构哪个好?

2022-11-29

零基础Web培训怎么样?和自学比更好吗

2022-11-17

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>