百度收录比较好的网站,自己制作app的应用程序,凡科平台送审严格吗,博客网站开发视频Spark RDD彼此之间会存在一定的依赖关系。依赖关系有两种不同的类型#xff1a;窄依赖和宽依赖。
窄依赖#xff1a;如果父RDD的每一个分区最多只被一个子RDD的分区使用#xff0c;这样的依赖关系就是窄依赖#xff1b;宽依赖#xff1a;如果父RDD的每一个分区被多个子RD…
Spark RDD彼此之间会存在一定的依赖关系。依赖关系有两种不同的类型窄依赖和宽依赖。
窄依赖如果父RDD的每一个分区最多只被一个子RDD的分区使用这样的依赖关系就是窄依赖宽依赖如果父RDD的每一个分区被多个子RDD的分区使用这样的依赖关系就是宽依赖。
map、filter、union等操作都是典型的窄依赖操作如下图所示。通过观察发现每一个父RDD的分区都只被一个子RDD的分区使用。 注意join操作可能会比较特殊某些情况的join是窄依赖操作但有些情况的join是宽依赖操作。需要具体问题具体分析。 视频讲解如下 【赵渝强老师】Spark RDD的窄依赖关系 宽依赖最典型的操作就是分组如下图所示。这里父RDD的每一个分区都被多个子RDD的分区使用。 注意这里的join操作就是一个宽依赖操作。 视频讲解如下 【赵渝强老师】Spark RDD的宽依赖关系
有了RDD之间不同的依赖关系就可以划分任务执行的阶段从而构建任务执行的DAG(Directed Acyclic Graph有向无环图)图。对于窄依赖分区的转换处理在同一个阶段中完成计算对于宽依赖由于有Shuffle的存在只能在父 RDD处理完成后子RDD才能开始计算因此宽依赖是划分任务阶段的标准。下图中的任务一共被划分成了三个不同阶段来执行。
视频讲解如下 【赵渝强老师】如何划分Spark任务的执行阶段 通过借助Spark Web Console可以很方便的查看到任务被划分的阶段以及DAG图。下图是在Web Console查看WordCount任务的DAG图。