如何设置spark中每个stage的task数目

0
我们已经知道spark的DAGScheduler是如何划分stage的,那么每个stage中task又是怎么划分的呢?
已邀请:
0

regan - run! run! run! happy runner! 我是奔跑的小米~ 2017-02-23 回答

从后往前遍历,遇到ShuffleDependency就标记注册Shffule且ShffuleDependency是划分Stage的依据,前半部分为ShuffleMapStage后半部分为ResultStage,分别对应ShuffleMapTask和ResultTask。之所以以Shuffle为划分stage的依据是因为Shuffle操作通常都会伴随大量的网络IO及磁盘IO,是整个计算过程中最影响性能的地方。Shffule为map和reduce的中间的桥梁~顾名思义,stage为一个阶段,这个阶段是抽象的,具体要划分为任务集,因此stage在逻辑上对应一个TaskSet集合,这个TaskSet集合里面包含拥有相同处理逻辑的Task,Task可以在集群中并行的运行,是最小执行单元~
可以通过repartitions或coalese方法重新分区,每个分区对应 一个Task

要回复问题请先登录注册