一篇文章看懂 Spark RDD
Stage 的划分简单的说是以 shuffle 和 result 这两种类型来划分。在 Spark中有两类 task,一类是 shuffleMapTask,一类是 resultTask,第一类 task的输出是 shuffle 所需数据,第二类 task 的输出是 result,stage的划分也以此为依据,shuffle 之前的所有变换是一个 stage,shuffle之后的操作是另一个stage。 如果 job 中有多次 shuffle,那么每个 shuffle 之前都是一个 stage. 会根据 RDD 之间的依赖关系将 DAG图划分为不同的阶段,对于窄依赖,由于 partition 依赖关系的确定性,partition 的转换处理就可以在同一个线程里完成,窄依赖就被 spark 划分到同一个 stage 中,而对于宽依赖,只能等父 RDD shuffle 处理完成后,下一个 stage 才能开始接下来的计算。之所以称之为 ShuffleMapTask 是因为它需要将自己的计算结果通过 shuffle 到下一个 stage 中。 【编辑推荐】
点赞 0 (编辑:惠州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |