一、 DAG定义
DAG每个节点代表啥?代表的一个RDD
1) 一个RDD生成两个RDD:
RDD2 = RDD1.filter(xxxxx)
RDD3 = RDD1.filter(yyyy)
是从RDD1到RDD2,RDD3这样的过程
2) Union是两个RDD合并成一个的过程
则是RDD2 RDD3变成RDD4的过程
3) filter/map/reduceByKey 应该都是一条直线
是从RDD4到RDD5这样的过程
上述都是transformation
RDD5.collect(); //action
RDD5.foreach(); //action
这种则会生成两个job,会顺序提交,前一个job执行结束之后才会提交下一个job(假设上述代码都在一个线程中)
(可以和上一章中Persist中的job提交对照看)
(二)、RDD依赖关系
RDD依赖关系,也就是有依赖的RDD之间的关系,比如RDD1------->RDD2(RDD1生成RDD2),RDD2依赖于RDD1。这里的生成也就是RDDtransformation操作
窄依赖(也叫narrow依赖)
从父RDD角度看:一个父RDD只被一个子RDD分区使用。父RDD的每个分区最多只能被一个Child RDD的一个分区使用
从子RDD

本文详细介绍了Spark中的DAG概念,包括RDD的生成与转换操作。重点讲解了RDD的两种依赖关系——窄依赖和宽依赖,以及它们在计算效率和故障恢复中的作用。此外,还阐述了如何根据依赖关系划分stage,并通过实例验证了Spark的stage划分原则,特别是shuffle操作如何导致stage的划分。
最低0.47元/天 解锁文章
641

被折叠的 条评论
为什么被折叠?



