scala – Apache Spark中的Shuffled vs non-shuffled coalesce

前端之家收集整理的这篇文章主要介绍了scala – Apache Spark中的Shuffled vs non-shuffled coalesce前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在将RDD写入文件之前执行以下转换之间有什么区别?

> coalesce(1,shuffle = true)
> coalesce(1,shuffle = false)

代码示例:

val input = sc.textFile(inputFile)
val filtered = input.filter(doSomeFiltering)
val mapped = filtered.map(doSomeMapping)

mapped.coalesce(1,shuffle = true).saveAsTextFile(outputFile)
vs
mapped.coalesce(1,shuffle = false).saveAsTextFile(outputFile)

它与collect()相比如何?我完全知道Spark保存方法会将它存储为HDFS风格的结构,但是我对collect()和shuffled / non-shuffled coalesce()的数据分区方面更感兴趣.

解决方法

shuffle = true和shuffle = false在结果输出中不会有任何实际差异,因为它们都会下降到单个分区.但是,当你将它设置为true时,你将进行一次无用的随机播放.使用shuffle = true,输出均匀分布在分区之间(如果需要,还可以增加分区数),但由于目标是1分区,所以一切都在一个分区中结束.

至于与collect()的比较,区别在于所有数据都存储在单个执行器而不是驱动程序上.

猜你在找的Scala相关文章