PySpark RDD有幾種類型算子?
算子:分布式集合對象上的API稱之為算子。
RDD的算子分為兩類:
Transformation:轉換算子;
Action:動作(行動)算子。
Transformation算子
1 值類型valueType
map: map(func):

? 將func函數(shù)作用到數(shù)據(jù)集的每一個元素上,生成一個新的RDD返回。
map: map(func):

自定義Python函數(shù):
上述代碼類似于:

groupBy

Filter:
filter(func) 選出所有func返回值為true的元素,生成一個新的RDD返回

Flatmap:
flatMap會先執(zhí)行map的操作,再將所有對象合并為一個對象

flatMap和map的區(qū)別:
flatMap在map的基礎上將結果合并到一個list中
2 雙值類型DoubleValueType?
Union:對兩個RDD求并集
Intersection:對兩個RDD求交集
3 Key-Value值類型
groupByKey:
以元組中的第0個元素作為key,進行分組,返回一個新的RDD
groupByKey之后的結果中 value是一個Iterable
reduceByKey:將key相同的鍵值對,按照Function進行計算
sortByKey:根據(jù)key進行排序
countByValue
?
Action算子
collect
返回一個list,list中包含 RDD中的所有元素
只有當數(shù)據(jù)量較小的時候使用Collect 因為所有的結果都會加載到內存中
reduce
?reduce將RDD中元素兩兩傳遞給輸入函數(shù),同時產生一個新的值,新產生的值與RDD中下一個元素再被傳遞給輸入函數(shù)直到最后只有一個值為止。
first
返回RDD的第一個元素
take
? ?返回RDD的前N個元素,`take`(*num*)
Top:排序取前幾個從大到小? ?
Count:返回RDD中元素的個數(shù)
takeSample???

foreach
僅返回滿足foreach內函數(shù)條件元素。在下面的示例中,我們在foreach中調用print函數(shù),它打印RDD中的所有元素。

