首页 > 试题广场 >

sc.parallelize([(1, 2), (1, 3)

[单选题]
sc.parallelize([(1, 2), (1, 3), (2, 3), (2, 4), (3, 1)]).reduceByKey(lambda x, y : x + y).count().collect()操作中会产生多少个 stage()
  • 1
  • 2
  • 3
  • 4
首先获取list里面的每个元素,不管有没有map都算开始第一个阶段,stage1
接着reducebykey 肯定shuffle 了。 因此就 有一个 stage2 了
而后面的count 计算 是可以并行处理的,也就是 每个key的总数互相之间计算并没有依赖,因此不会产生新的 stage 。


其实还可以这样理解 shuffle 肯定会产生stage . 而stage 的划分是依赖关系决定的,遇窄依赖不变,遇宽依赖则进行划分。
第一个步开始的时候取数生成RDD 是属于 窄依赖。 也就是 stage 数是1
接着 reduceByKey  必须按照key 来进行生成新的分区。与原来开始的时候rdd的分区数可能不一样了。 划分一个新的stage. 也就是2 




发表于 2020-08-20 08:32:44 回复(0)
以shuffle为界限划分两个stage,常见shuffle算子distinctgroupByKeyreduceByKeyaggregateByKeyjoincogrouprepartition等。
发表于 2020-03-09 14:46:09 回复(0)
阶段数是shuffle数+1
发表于 2021-04-15 19:44:25 回复(0)
Shuffle之后产生stage,窄不变,宽变
发表于 2021-08-28 06:45:28 回复(0)
stage依据shuffle划分,reduce算子产生shuffle
发表于 2019-04-01 18:46:30 回复(0)