Spark Repartition()与Coalesce()的区别

本文探讨了Spark中的coalesce和repartition的区别。coalesce主要在减少分区数时使用,尽量避免数据混洗;而repartition在增加分区数时会进行全量数据混洗,确保分区数据均匀。在性能上,coalesce在减少分区时通常比repartition表现更好,但在需要保证数据分布均匀时,repartition是更合适的选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


原数据:
Node 1 = 1,2,3
Node 2 = 4,5,6
Node 3 = 7,8,9
Node 4 = 10,11,12

coalesce(2)以后

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

原数据:
Partition 00000: 1, 2, 3
Partition 00001: 4, 5, 6
Partition 00002: 7, 8, 9
Partition 00003: 10, 11, 12

repartition(2)以后

Partition A: 1, 3, 4, 6, 7, 9, 10, 12
Partition B: 2, 5, 8, 11
 
 
coalesce之间的区别repartition?
    coalesce使用现有分区来最大程度减少混洗的数据量。 
    repartition创建新分区并进行完全随机播放。 
    coalesce导致分区的数据量不同(有时分区的大小差异很大),分区的大小repartition大致相等。
coalesce还是repartition更快?
    coalesce可能比repartition快, 但是使用大小不等的分区通常比使用大小相同的分区慢(分区数据均匀与不均匀情况)。过滤大型    数据集后,通常需要重新分配数据集。 我发现repartition划分总体上更快,因为Spark是用来处理分区大小相同的。
 
repartition -建议在增加分区数量的同时使用它,因为它涉及对所有数据进行改组。
coalesce-建议在减少分区数的同时使用它。例如,如果您有3个分区,并且想要将其减少到2,coalesce则将第3个分区数据移动到分区1和2。分区1和2将保留在同一容器中。另一方面,repartition将对所有分区中的数据进行混洗,因此执行器之间的网络使用率很高,并且会影响性能。
coalescerepartition减少分区数相比性能更好
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值