1.算子的分类
大致可以分为三大类算子。
1)Value数据类型的Transformation算子,这种变换并不触发提交
作业,针对处理的数据项是Value型的数据。
2)Key-Value数据类型的Transfromation算子,这种变换并不触发
提交作业,针对处理的数据项是Key-Value型的数据对。
3)Action算子,这类算子会触发SparkContext提交Job作业。
1.1Value型Transformation算子
处理数据类型为Value型的Transformation算子可以根据RDD变换
算子的输入分区与输出分区关系分为以下几种类型。
1)输入分区与输出分区一对一型。
2)输入分区与输出分区多对一型。
3)输入分区与输出分区多对多型。
4)输出分区为输入分区子集型。
5)还有一种特殊的输入与输出分区一对一的算子类型:Cache
型。Cache算子对RDD分区进行缓存。
1.1.1 输入分区与输出分区一对一型
map flatMap glom(每个分区形成一个数组,内部实现是返回的GlommedRDD)
1.1.2 输入分区与输出分区多对一型
union cartesian
1.1.3输入分区与输出分区多对多型
groupBy:将元素通过函数生成相应的Key,数据就转化为Key-Value格式,之后将Key相同的元素分为一组
例如,V1,V2合并为一个Key-Value对,其中key为“V”,Value为“V1,V2”,形成V,Seq(V1,V2)
1.1.4输出分区为输入分区子集型
filter distinct subtract(RDD相减)
1.1.5 Cache型
cache persist数据缓存在哪里由StorageLevel
枚举类型确定。有以下几种类型的组合,DISK代表磁盘,MEMORY代表内存,SER代表数据是否进行序列化存储。
1.2 Key-Value型Transformation算子
1.2.1输入分区与输出分区一对一
mapValues:针对(Key,Value)型数据中的Value进行Map操作,而不对Key进行处理
1.2.2对单个RDD或两个RDD聚集
combineByKey reduceByKey
1.2.3连接
join
1.3Action算子
Action算子的输出空间将Action算子进行分类:无输出、HDFS、Scala集合和数据类型
1.3.1无输出
foreach
1.3.2HDFS
saveAsTextFile saveAsObjectFile
1.3.3 Scala集合和数据类型
collect count collectAsMap top