map:用于遍历RDD,将函数应用于每一个元素,返回新的RDD。(transformation算子)
mapPartitions:用于遍历操作RDD中的每一个分区,返回新的RDD。(transformation算子)
flatMap:先将RDD中的元素进行map操作,然后将map结果‘压平’,效率要优于map。
foreach:用于遍历RDD,将函数应用于每一个元素,无返回值。(action算子)
foreachPartition:用于遍历操作RDD中的每一个分区,无返回值。(action算子)
groupByKey(numPartitions=None):对每个key进行操作,但只生成一个sequence(序列),不做聚合等操作,因为该算子不能自定义函数,如果要聚合等自定义函数,就需要对结果进行map。
combineByKey:根据key组合数据,但是组合之后的数据类型与输入时值的类型不一样。
foldByKey:foldByKey和reduceByKey的功能是相似的,都是在map端先进行聚合,再到reduce聚合。不同的是flodByKey需要传入一个参数。该参数是计算的初始值。
reduceByKey(func, numPartitions=None):用于对每个key的多个value进行merge操作,它能够在本地先进行merge操作,merge操作可以通过函数自定义,在对大数据进行复杂计算时,该算子效率优于groupKey。
aggregateByKey:对RDD中相同的key的值进行操作,在聚合的过程中同样使用了一个中立的初始值。
aggregateByKey(0)(math.max(_,_),_+_)
#(0):0是传入的初始值
#math.max(_,_):是一个函数,表示传入的数据与初始值比较,取最大值
#_+_:和reduceByKey中一样,表示`(x,y)=>x+y`这样的函数