您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關怎么進行spark的基本算子使用和源碼解析,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
是窄依賴 由多變少 shuffer默認是false,要注意
解決小文件,例如你如果開始有200個文件對應20分區,你極端情況下你過濾變長一個文件,你不能還用200個分區去裝吧 用coalesce解決,主要就是把前面的壓縮一下,但是過濾完后你要用coalesce必須實現做預估
你如果是xxx.oalesce(1),從源頭就是1,不會像mr可以設置reduce的數量
下圖說述的分區的大小a.partitions.size 你之前沒有用變量接收coalesce 的值,是不會變得值
note With shuffle = true, you can actually coalesce to a larger number 一般數不需要第二個參數的
就是repartition底層調用coalesce兩個參數
每個函數操作的對象是每個元素
千萬不要用于操作數據庫,否則一個元素要拿個connect,太耗費資源
每個函數作用在每個分區上,多用于操縱數據庫,一個分區一個connect
一個是打印每個元素,一個是按分區打印,都是action
foreachPartition多用于操作數據庫,存儲結果
源碼 返回數組,數組里包含所有元數 數據小用可以,因為數據都會被放到內存里,輸出到driver端的 超過內存會報oom
把driver 調大一些,有局限性 RDD中元素太大,抽取回driver會報OOP 不可以用collect 可以用take
collect collectByKey collectByValue collectAsMap 結果集出來后變成map 這些要看數據量要悠著點用,都要數據量少 廣播變量必須數據量少才可以用
面試常問take是全部掃描還是部分掃描: 部分掃描從源碼有體現
不確定數據有多大你可以先count一下 如果少的情況下捏可以用collect,如果太多可以用take 這些知識測試用 要全部結果你可以保存到文件系統上去saveas...
groupByKey 比reduceByKey 數據大小明顯變大,不如reduceByKey 性能好
groupByKey 所有元素都shuffer
reduceByKey 在map階段有一個聚合
關于怎么進行spark的基本算子使用和源碼解析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。