什么是DAG?DAG有向无环图实例讲解
DAG(Directed Acyclic Graph)叫做有向无环图,Spark中的RDD通过一系列的转换算子操作和行动算子操作形成了一个DAG。DAG是一种非常重要的图论数据结构。如果一个有向图无法从任意顶点出发经过若干条边回到该点,则这个图就是有向无环图,具体如图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 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老师定期为大家解决学习所遇到的问题,想要学习的小伙伴,不要错过。
相关推荐HOT
更多>>程序开发培训多少钱?
程序开发培训多少钱,估计这是每一个想要从事于IT技术行业小伙伴们都关注的问题。网络上有关培训费用的说法有很多,但是根据市场公平价来介绍,...详情>>
2023-03-09 11:31:47北京java培训班学费一般多少?要考虑综合水平和情况
在北京,java培训班的学费因培训机构、课程内容和时长等因素而异。北京java培训班学费一般多少,一般来说,北京的培训班学费一般都在2万元左右...详情>>
2023-02-13 17:33:00计算机编程入门怎么学的?
计算机编程学习是有一整套完整体系的,如果是零基础的话,想要系统学习最好是有专业人士引导,或者是参加培训班学习。计算机编程还分为底层编程...详情>>
2022-12-22 12:05:00快来抄作业!40个爆款短视频标题拿走不谢谢
16、截图为证 这个姐妹MXXX就是我滴神~ 17、XXX零失败!!19、省钱了!37、我又快乐了,这个XXX简直神了 38、私藏 ,一般人我不告诉他 ...详情>>
2022-11-11 18:16:00热门推荐
抖音养号的正确方法,务必收藏!
沸前端工程师的主要工作包括哪些?
热响应式和自适应的区别,纯干货来了
热学影视后期大概多少钱,哪个机构好?
新程序开发培训多少钱?
it行业是干什么的?学it要注意什么?
unity3d自学要多久?有什么建议
unity3d培训班多少钱可以学到真本事?培训机构真的靠谱吗
前端工程师技术要求非常严格,工作要求值得人们重视
女生学前端还是软件测试好?关注工作岗位需求
北京web前端培训怎么样?选择不同机构有标准
北京java培训班学费一般多少?要考虑综合水平和情况
程序员培训一般多久?坚持学习很重要
程序员一年能赚多少钱?有不同的工作要求