Spark中Map與MapPartition和的詳細區別


1.mapPartitions效率比map高

  1. Map(function)的function是針對RDD的所有元素進行操作,有多少個元素就會執行多少次
  2. MapPartition(function)的function是RDD的分區進行操作,有多少個分區就會執行多少次,獨立在每個分區上運行,所以mapPartitions效率比map高的多。
  3. 假設有N個元素,有M個分區,那么map的函數的將被調用N次,而mapPartitions被調用M次,一個函數一次處理所有分區。

2.mapPartitions function不能重復執行

  1. mapPartitions()每次處理一個分區的數據,這個分區的數據處理完后,原 RDD 中該分區的數據才能釋放,可能導致 OOM。
  2. mapPartitions 數據存在Iterator迭代器中,Iterator<T> => Iterator<U>,同java的Iterator一樣,只能遍歷使用一次。
  3. SparkSql默認會開啟mapPartition的優化

總結:當內存空間較大的時候建議使用mapPartitions()。


免責聲明!

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



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