必讀|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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM