Spark深入淺出之常用Transformation算子功能概述

  1. map(func):返回一個新的RDD,該RDD由每一個輸入元素經過func函數轉換後組成。
  2. mapPartitions(func):類似於map,但獨立地在RDD的每一個分片上運行,因此在類型爲T的RD上運行時,func的函數類型必須是Iterator[T] => Iterator[U]。假設有N個元素,有M個分區,那麼map的函數將被調用N次,而mapPartitions被調用M次,一個函數一次處理所有分區。
  3. reduceByKey(func,[numTask]):在一個(k,v)的RDD上調用,返回一個(k,v)的RDD,使用給定的reduce函數,將相同key的值聚合到一起,reduce任務的個數可以通過第二個可選的參數來設置。
  4. aggregateByKey(zeroValue:U,[partitioner:Partitioner])(seqOp:(U,V)=>U,combOp:(U,U)=>U):在kv對的RDD中,按key將value進行分組合並,合併時,將每個value和初始值作爲seq函數的參數,進行計算,返回的結果作爲一個新的kv對,然後再將結果按照key進行合併,最後將每個分組的value傳遞給combine函數進行計算(先將前兩個value進行計算,將返回結果的下一個value傳給combine函數,以此類推),將keey與計算結果作爲一個新的kv對輸出。
  5. combineByKey(createCombiner: V=>C, mergeValue: (C, V) =>C, mergeCombiners: (C,C) =>C):對相同K,把V合併成一個集合。
  • createCombiner: combineByKey() 會遍歷分區中的所有元素,因此每個元素的鍵要麼 還沒有遇到過,要麼就和之前的某個元素的鍵相同。如果這是一個新的元素,combineByKey() 會使用一個叫作 createCombiner()的函數來創建那個鍵對應的累加器的初始值。
  • mergeValue: 如果這是一個在處理當前分區之前已經遇到的鍵,它會使用 mergeValue() 方法將該鍵的累加器對應的當前值與這個新的值進行合併。
  • mergeCombiners: 由於每個分區都是獨立處理的, 因此對於同一個鍵可以有多個累加 器。如果有兩個或者更多的分區都有對應同一個鍵的累加器, 就需要使用用戶提供的 mergeCombiners() 方法將各個分區的結果進行合併。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章