加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 18:05:42 所属栏目:安全 来源:网络整理
导读:在将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.
在将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()的比较,区别在于所有数据都存储在单个执行器而不是驱动程序上.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读