Action算子
无输出
foreach
对RDD每个元素执行函数f,不反悔RDD和Array,而是返回Unit

输出到HDFS
saveAsTextFile
数据输出,存储到HDFS
将RDD中的元素映射到(Null,x.toString),然后写入HDFS

saveAsObjectFile
将分区中的每10个元素组成一个Array,然后将Array序列化,映射为(Null,BytesWritable(Y))写入HDFS的SequenceFile格式

Scala集合或数据
collect
相当于toArray,将分布RDD转换为单机Array

collectAsMap
对(K,V)型的RDD数据返回一个单机HashMap,对于重复Key,后面的元素覆盖前面的

reduceByKeyLocally
先reduce,再collectAsMap
lookup
对(K,V)型的RDD操作,返回指定key对应的元素形成Seq
如果RDD包含分区器,只处理K所在的分区,如果不存在分区器,对全部RDD元素进行扫描

count
返回RDD元素个数
top、take
返回最大、最小的K个元素
takeOrdered
返回最小的K个元素,返回数组中保持元素顺序
first
相当于top(1)
reduce
对两个元素K,V进行reduce函数操作,将结果和迭代器取出的下一个元素进行reduce操作,直到遍历完所有元素
f(A,B)=>(A.1+"@"+B.1, A._2+B._2)

fold
与reduce原理相同
相当于每个reduce时,迭代器取的一个元素是zeroValue
fold(("V0", 2))((A, B)=>(A.1+"@"+B.1, A._2+B._2))

aggregate
将每个分区里面的元素进行聚合,然后用combine函数将每个分区的结果和初始值(zeroValue)进行combine操作。这个函数最终返回的类型不需要和RDD中元素类型一致
网友评论