Spark深入浅出之常用Transformation算子功能概述

  1. map(func):返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成。
  2. mapPartitions(func):类似于map,但独立地在RDD的每一个分片上运行,因此在类型为T的RD上运行时,func的函数类型必须是Iterator[T] => Iterator[U]。假设有N个元素,有M个分区,那么map的函数将被调用N次,而mapPartitions被调用M次,一个函数一次处理所有分区。
  3. reduceByKey(func,[numTask]):在一个(k,v)的RDD上调用,返回一个(k,v)的RDD,使用给定的reduce函数,将相同key的值聚合到一起,reduce任务的个数可以通过第二个可选的参数来设置。
  4. aggregateByKey(zeroValue:U,[partitioner:Partitioner])(seqOp:(U,V)=>U,combOp:(U,U)=>U):在kv对的RDD中,按key将value进行分组合并,合并时,将每个value和初始值作为seq函数的参数,进行计算,返回的结果作为一个新的kv对,然后再将结果按照key进行合并,最后将每个分组的value传递给combine函数进行计算(先将前两个value进行计算,将返回结果的下一个value传给combine函数,以此类推),将keey与计算结果作为一个新的kv对输出。
  5. combineByKey(createCombiner: V=>C, mergeValue: (C, V) =>C, mergeCombiners: (C,C) =>C):对相同K,把V合并成一个集合。
  • createCombiner: combineByKey() 会遍历分区中的所有元素,因此每个元素的键要么 还没有遇到过,要么就和之前的某个元素的键相同。如果这是一个新的元素,combineByKey() 会使用一个叫作 createCombiner()的函数来创建那个键对应的累加器的初始值。
  • mergeValue: 如果这是一个在处理当前分区之前已经遇到的键,它会使用 mergeValue() 方法将该键的累加器对应的当前值与这个新的值进行合并。
  • mergeCombiners: 由于每个分区都是独立处理的, 因此对于同一个键可以有多个累加 器。如果有两个或者更多的分区都有对应同一个键的累加器, 就需要使用用户提供的 mergeCombiners() 方法将各个分区的结果进行合并。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章