spark的基本運算元使用和原始碼解析

yunqiublog發表於2019-07-23

一.coalesce

1.coalesce原始碼


2.coalesce解釋


是窄依賴
由多變少
shuffer預設是false,要注意

3.coalesce應用場景


解決小檔案,例如你如果開始有200個檔案對應20分割槽,你極端情況下你過濾變長一個檔案,你不能還用200個分割槽去裝吧
用coalesce解決,主要就是把前面的壓縮一下,但是過濾完後你要用coalesce必須實現做預估

4.上述的極端情況


你如果是xxx.oalesce(1),從源頭就是1,不會像mr可以設定reduce的數量

5.注意事項用coalesce 中RDD的不可變性


下圖說述的分割槽的大小a.partitions.size  你之前沒有用變數接收coalesce 的值,是不會變得值

6.你傳一個引數要小於預設分割槽才會生效

7.coalesce設定的引數大於預設的分割槽數不會生效,前提是一個引數

8.coalesce設定的引數大於預設的分割槽數生效

9.此問題對應的原始碼:


note With shuffle = true, you can actually coalesce to a larger number
一般數不需要第二個引數的

二.repartition

1.原始碼:

2.底層呼叫的是coalesce,但是傳兩個引數,允許shuffer

3.由少變多

4.repartition與coalesce區別:


就是repartition底層呼叫coalesce兩個引數

三.map方法使用

1.原始碼

2.解釋


每個函式操作的物件是每個元素

3.注意事項


千萬不要用於運算元據庫,否則一個元素要拿個connect,太耗費資源

四.mapPartitions

1.原始碼

2.解釋


每個函式作用在每個分割槽上,多用於操縱資料庫,一個分割槽一個connect

五.foreach 與 foreachPartition

1.原始碼

2.解釋


一個是列印每個元素,一個是按分割槽列印,都是action

3.注意事項


foreachPartition多用於運算元據庫,儲存結果

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69941978/viewspace-2651535/,如需轉載,請註明出處,否則將追究法律責任。

相關文章