答案 0 :(得分:6)
在您的1阶段DAG中,您只是使用集合创建RDD,在第二个RDD中,您使用partitionBy对RDD进行随机播放,以便您的数据在群集上进行混洗。因此,由于改组数据,您的过程在第二阶段进展缓慢。
ShuffledRDD , MapPartitionsRDD 和 ParallelCollectionRDD 之间的差异:
ShuffledRDD :在数据在群集上进行混洗时创建了ShuffledRDD。如果你使用任何改变你的数据的转换(例如join,groupBy,repartition等),它将创建一个shuffledRDD。
MapPartitionsRDD :使用mapPartition转换时将创建MapPartitionsRDD。
ParallelCollectionRDD :使用集合对象创建RDD
时会创建ParallelCollectionRDD。
如果您想了解更多详情,请查看此内容,使您更清楚https://github.com/JerryLead/SparkInternals