scala - Spark Distinct操作的DAG问题
本文介绍了scala - Spark Distinct操作的DAG问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
问题
我创建了一个分成两个节点的List
val list = sc.parallelize(List(1,1,1,1,2,2,2,3,3,4),2)
现在对其进行distinct操作
list.distinct.collect
执行时的DAG图如下所示
请问,这个Stage0中的distinct与Stage1中的distinct的区别。
我是这么理解的,首先distinct在各个节点做一次transformation,然后再shuffle做一次transformation。不知道是否正确。
解决方案
spark 不同stage 之间的划分原则是是否有shuffle操作。
这里的不是进行了两次 distinct操作,而是一个distinct操作被划分为两个stage,因为有distinct操作需要shuffle。
如果你仔细看stage0的话,你会发现这里进行的distinct 是mapPartitions。
这篇关于scala - Spark Distinct操作的DAG问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文