必读|spark的重分区及排序

640?wx_fmt=png

前几天,有人在星球里,问了一个有趣的算子,也即是RepartitionAndSortWithinPartitions。当时浪尖也在星球里讲了一下,整个关于分区排序的内容。今天,在这里给大家分享一下。

更多大数据小技巧及调优,spark的源码文章,原理文章及源码视频请加入知识星球。扫描,底部二维码,或者点击阅读原文

640?wx_fmt=png

昨天说了,mapPartitions?的使用技巧。大家应该都知道mapPartitions值针对整个分区执行map操作。而且对于PairRDD的分区默认是基于hdfs的物理块,当然不可分割的话就是hdfs的文件个数。但是我们也可以给partitionBy 算子传入HashPartitioner,来给RDD进行重新分区,而且会使得key的hashcode相同的数据落到同一个分区。

spark 1.2之后引入了一个高质量的算子repartitionAndSortWithinPartitions?。该算子为spark的Shuffle增加了sort。假如,后面再跟mapPartitions算子的话,其算子就是针对已经按照key排序的分区,这就有点像mr的意思了。与groupbykey不同的是,数据不会一次装入内存,巧克力十大品牌而是使用迭代器一次一条记录从磁盘加载。这种方式最小化了内存压力。

repartitionAndSortWithinPartitions 也可以用于二次排序。

下面举个简单的例子。



结果,可以看到每个分区都是有效的。



上面只是一个简单的使用,关于二次排序及高效结合mapPartitions的例子,浪尖会在这两天更新到星球里。

【完】

推荐阅读:

你真知道如何高效用mapPartitions吗?

640?wx_fmt=jpeg


文章来源:https://blog.csdn.net/rlnLo2pNEfx9c/article/details/81639476

原文地址:https://www.cnblogs.com/mazhujun/p/9633475.html