算子的定义:RDD中定义的函数,可以对RDD中的数据进行转换和操作。下面根据算子类型的分类进行总结:
1. value型算子
从输入到输出可分为一对一(包括cache)、多对一、多对多、输出分区为输入分区自激 1)一对一, map,简单的一对一映射,集合不变; flatMap,一对一映射,并将最后映射结果整合; mappartitions,对分区内元素进行迭代操作,例如过滤等,然后分区不变 glom,将分区内容转换成数据 2)多对一, union,相同数据类型RDD进行合并,并不去重 cartesian,对RDD内的所有元素进行笛卡尔积操作 3)多对多, groupBy,将元素通过函数生成相应的Key,然后转化为Key-value格式 4)输出分区为出入分区子集, filter,对RDD进行过滤操作,结果分区不调整 distinct,对RDD进行去重操作, subtract,RDD间进行减操作,去除相同数据元素 sample/takeSample 对RDD进行采样操作 5)cache, cache,将RDD数据原样存入内存 persist,对RDD数据进行缓存操作2. Key-Value算子 Key-Value算子大致可分为一对一,聚集,连接三类操作 1)一对一, mapValues,针对数值对中的Value进行上面提到的map操作 2)聚集操作 combineByKey、reduceByKey、partitionBy、cogroup 3)连接 join、leftOutJoin、rightOutJoin3. Actions算子 该算子通过SparkContext执行提交作业操作,出发RDD DAG的执行 1)foreach, 对RDD中每个元素进行操作,但是不返回RDD或者Array,只返回Unit 2)存入HDFS,saveAsTextFile,saveAsObjectFile 3)scala数据格式,collect,collectAsMap,reduceByKeyLocally, lookup, count, top, reduce, fold, aggregate