首页 理论教育 RDD[T]的分区相关API优化

RDD[T]的分区相关API优化

时间:2023-06-25 理论教育 版权反馈
【摘要】:解析对RDD分区设置相关的API,包括repartition、coalesce。RDD的分区个数对应了该RDD处理时的并行度,在实践过程中,可以通过修改一个RDD的分区数来优化性能。

RDD[T]的分区相关API优化

解析对RDD分区设置相关的API,包括repartition、coalesce。在解析过程中,通过解读源码,可以理解这两个API之间的关系。

RDD的分区个数对应了该RDD处理时的并行度,在实践过程中,可以通过修改一个RDD的分区数来优化性能。

一、coalesce

1.定义

2.功能描述

coalesce对RDD数据重新分区,如果是减少分区,直接设置新的分区数即可,如果增加分区个数,需要设置Shuffle为true,否则分区设置无效。

需要注意的是,即使是减少分区个数,如果设置了Shuffle为true,在重新分区过程中也会产生Shuffle过程。

3.示例

coalesce带两个参数,根据以下两种情况的组合,来分析该方法的作用。

1)numPartitions:分区数的增加/减少。

2)shuffle:重分区过程中是否进行shuffle操作。

4.示例解析

首先获取RDD的分区数,当前分区数为2,然后使用coalesce测试将分区数增加或减少后的分区个数,测试时,对shuffle参数也分别进行了设置。

需要注意的是,即使在减少分区数时,如果shuffle参数设置为true,对应的Lineage关系图中就会有ShuffledRDD,会存在Shuffle过程。

5.应用场景

1)大数据集加载并过滤,过滤后每个分区的数据量非常小,这时候可以使用该API,减少分区数,把小数据量的分区合并成一个分区。(www.xing528.com)

2)当将小数据量文件保存到外部存储系统时,可以通过将分区数重设为1,使得输出的数据在一个文件中,方便查看。

3)当分区数太低,导致CPU使用率过低时,可以借用该方法增加分区数,即增加处理的并行度,这时候可以提高CPU的使用率,继而提高性能。

二、repartition

1.定义

2.功能描述

也是对RDD数据重新分区,通过对源码的解析,可以看到它实际上是通过调用coalesce方法来实现的,但是在调用时,将shuffle的参数设置为true,因此,在调用repartition方法时,会产生shuffle过程。

说明:通过以上解析可知,如果重新分区不需要Shuffle即可完成的话,应该直接调用coalesce方法来实现。

3.repartition的源码

repartition方法其实就是coalesce(numPartitions,shuffle=true)方法的替换。

4.示例

5.示例解析

可以看到,使用repartition进行数据重新分区后得到的RDD都会有ShuffledRDD的父依赖。

6.应用场景

由上面的分析可知,repartition实际上是coalesce(numPartitions,shuffle=true)的缩写,因此,coalesce的应用场景也适用于该API。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈