为了账号安全,请及时绑定邮箱和手机立即绑定

Spark - repartition()vs coalesce()

Spark - repartition()vs coalesce()

Spark - repartition()vs coalesce()根据Learning Spark的说法请记住,重新分区数据是一项相当昂贵的操作。Spark还有一个优化版本的repartition(),称为coalesce(),它允许避免数据移动,但前提是你减少了RDD分区的数量。我得到的一个区别是,使用repartition()可以增加/减少分区数量,但是使用coalesce()时,只能减少分区数量。如果分区分布在多台机器上并运行coalesce(),它如何避免数据移动?
查看完整描述

3 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

它避免了完全洗牌。如果已知数量正在减少,则执行程序可以安全地将数据保存在最小数量的分区上,仅将数据从额外节点移出到我们保留的节点上。

所以,它会是这样的:

Node 1 = 1,2,3Node 2 = 4,5,6Node 3 = 7,8,9Node 4 = 10,11,12

然后coalesce下至2个分区:

Node 1 = 1,2,3 + (10,11,12)Node 3 = 7,8,9 + (4,5,6)

请注意,节点1和节点3不需要移动其原始数据。


查看完整回答
反对 回复 2019-07-25
  • 3 回答
  • 0 关注
  • 902 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信