Spark RDD算子整理 -- 轉換算子 行動算子

轉換算子操作:

  • filter

過濾符合條件的記錄數,true保留,false過濾掉。

  • map

將一個RDD中的每個數據項,通過map中的函數映射變爲一個新的元素。

特點:輸入一條,輸出一條數據。

  • flatMap

先map後flat。與map類似,每個輸入項可以映射爲0到多個輸出項。

  • sample

隨機抽樣算子,根據傳進去的小數按比例進行有放回或者無放回的抽樣。

  • reduceByKey

將相同的Key根據相應的邏輯進行處理。

  • sortByKey/sortBy

作用在K,V格式的RDD上,對key進行升序或者降序排序

  • join,leftOuterJoin,rightOuterJoin,fullOuterJoin

作用在K,V格式的RDD上。根據K進行連接,對(K,V)join(K,W)返回(K,(V,W))

  • join後的分區數與父RDD分區數多的那一個相同。
  • union

合併兩個數據集。兩個數據集的類型要一致。

  • 返回新的RDD的分區數是合併RDD分區數的總和。
  • intersection

取兩個數據集的交集

  • subtract

取兩個數據集的差集

  • mapPartition

與map類似,遍歷的單位是每個partition上的數據。

  • distinct(map+reduceByKey+map)  去重
  • cogroup

當調用類型(K,V)和(K,W)的數據上時,返回一個數據集(K,(Iterable<V>,Iterable<W>))

  • mapPartitionWithIndex

類似於mapPartitions,除此之外還會攜帶分區的索引值。

  • repartition

增加或減少分區。會產生shuffle。(多個分區分到一個分區不會產生shuffle

  • coalesce

coalesce常用來減少分區,第二個參數是減少分區的過程中是否產生shuffle。

true爲產生shuffle,false不產生shuffle。默認是false。

如果coalesce設置的分區數比原來的RDD的分區數還多的話,第二個參數設置爲false不會起作用,如果設置成true,效果和repartition一樣。即repartition(numPartitions) = coalesce(numPartitions,true)

  • groupByKey

作用在K,V格式的RDD上。根據Key進行分組。作用在(K,V),返回(K,Iterable <V>)。

  • zip

將兩個RDD中的元素(KV格式/非KV格式)變成一個KV格式的RDD,兩個RDD的個數必須相同。

  • zipWithIndex

該函數將RDD中的元素和這個元素在RDD中的索引號(從0開始)組合成(K,V)對。

 


行動算子操作:

  • count

返回數據集中的元素數。會在結果計算完成後回收到Driver端。

  • take(n)

返回一個包含數據集前n個元素的集合。

  • first

first=take(1),返回數據集中的第一個元素。

  • foreach

循環遍歷數據集中的每個元素,運行相應的邏輯。

  • collect

將計算結果回收到Driver端。

  • foreachPartition

遍歷的數據是每個partition的數據。

  • countByKey

 作用到K,V格式的RDD上,根據Key計數相同Key的數據集元素。

  • countByValue

根據數據集每個元素相同的內容來計數。返回相同內容的元素對應的條數。

  • reduce

根據聚合邏輯聚合數據集中的每個元素。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章