Spark的操作算子

一、在Apache Spark中,RDD(弹性分布数据集)是一个非常重要的核心概念,很多计算必须依赖于RDD。一般来说,RDD包括两个操作算子:

  1. 变换:变换算子的特点是懒执行,变换操作并不会立即执行,而是需要等到有动作操作的时候才会真正进行计算,并得到结果。
  2. 动作:动作算子的特点是立即执行,动作算子会对RDD计算出一个结果,并把结果返回到驱动器程序中,或把结果存储到外部存储系统(如HDFS)中。

二、Spark的操作算子(以PySpark为例)

  1. first操作
    动作算子,rdd.first(),获取rdd中的第一个元素。
  2. max操作
    动作算子,rdd.max(),获取rdd中的最大的元素。
  3. sum操作
    动作算子,rdd.sum(),返回rdd中的求和数值。
  4. take操作
    动作算子,rdd.take(n),获取rdd中前n个元素。
  5. top操作
    动作算子,rdd.top(n),获取降序后的rdd中前n个元素。
  6. collect操作
    动作算子,rdd.collect(),从集群中拉取rdd的元素到driver端,转化为数组
  7. collectMap操作
    动作算子,rdd.collectMap(),与collect操作类似,适用于键值RDD,将它们转换为Map映射以保留其键值结构。
  8. countByKey操作
    动作算子,rdd.countByKey(),统计键值rdd中每个key数量,以字典形式返回
  9. countByValue操作
    动作算子,rdd.countByValue(),统计rdd中每个元素的数量,以字典的形式返回。
  10. glom操作
    变换算子,rdd.glom(),将rdd各分区的元素转化为数组形式。
  11. coalesce操作
    变换算子,rdd.coalesce(n, isShuffle=Flase),对rdd重新划分n个区,其中isShuffle(默认为False)表示重新分区过程中是否进行混淆操作。
  12. combineByKey操作
    变换算子,rdd.combineByKey(createCombiner, mergeValue, mergeCombiners, numPartitions=None, partitionFunc=portable_hash),其中前3个参数为必填,为操作函数。
    (1)createCombiner(V) -> C函数,对每个key下的第一个值V进行初始化成C,如类型转换等。
    (2)mergeValue(C, V) -> C函数,将key下的其它值添加到(1)初始化的C中.
    (3)mergeCombiners(C, C2) -> C函数,对(2)中以完成合并的各key组合C,进行合并.
  13. distinct操作
    变换算子,rdd.distinct(),对rdd去重。
  14. filter操作
    变换算子,rdd.filter(func),返回rdd中满足func的元素。
  15. flatMap操作
    变换算子,rdd.flatMap(func),对rdd中的元素按func处理,将处理进行扁平化处理。
  16. flatMapValues操作
    变换算子,rdd.flatMapValues(func),对键值格式的rdd中的value进行func定义的逻辑处理。