轉換算子操作:
- 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
根據聚合邏輯聚合數據集中的每個元素。