[Spark基础]--repartition vs coalesce

本文详细探讨了Spark中的repartition和coalesce的区别,包括它们在分区数量变化上的不同以及对性能的影响。repartition允许增减分区,涉及数据全量shuffle,而coalesce仅用于减少分区,避免数据移动。过多或过少的分区都会影响性能。合理设置分区数量,通常建议每个CPU核心有2-3个任务。文章提供了在Spark任务提交和transform算子中调整分区数的方法,并给出了相关参考资料。
摘要由CSDN通过智能技术生成

请记住,对您的数据进行重新分区是一个相当昂贵的操作。还好,Spark还有一个名为coalesce()的repartition()的优化版本,它允许避免数据移动,但只有在减少RDD分区的数量的时候使用。

一、repartition和coalesce区别

1、coalesce操作只能减少分区,它是使用现有分区来减少shuffer的数据量,在一些具体的情况下,我发现repartition比coalesce更快。
在我的应用程序中,当我们估计的文件数量低于一定的阈值时,重新分区工作会更快。

if(numFiles > 20)
    df.coalesce(numFiles).write.mode(SaveMode.Overwrite).parquet(dest)
else
    df.repartition(numFiles).write.mode(SaveMode.Overwrite).parquet(dest)

2、repartion操作可以增加分区,也可减少分区,它创建新的分区,进行完全的shuffer操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

往事随风ing

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值