spark算子的理解
1)Value数据类型的Transformation算子
一、输入分区与输出分区一对一型
1、map算子 一次一个,一进一出。每个元素都调用一下我给的函数
2、flatMap算子 与上面map一样,不过最后把数组或者容器拆散,放入RDD中
3、mapPartitions算子 一次一批数据,优点比map快,缺点容易爆内存。
4、glom算子 将分区里的数据变成Array
二、输入分区与输出分区多对一型
5、union算子 两个相同元素的RDD做合并,等于++
6、cartesian算子 做笛卡尔积运算
三、输入分区与输出分区多对多型
7、grouBy算子 分组,
四、输出分区为输入分区子集型
8、filter算子 过滤
9、distinct算子 RDD元素去重。
10、subtract算子 集合的差操作。RDD1-(RDD1∩RDD2)。[v1,v2][v1,v8]→[v2,v8]
11、sample算子 随机比例抽样
12、takeSample算子 随机个数抽样
五、Cache型
13、cache算子 从disk缓存到内存
14、persist算子 不懂,比cache更高级
2)Key-Value数据类型的Transfromation算子
一、输入分区与输出分区一对一
15、mapValues算子 针对value进行map操作
二、对单个RDD或两个RDD聚集
单个RDD聚集
16、combineByKey算子 RDD内部聚合,[v1,2|v1,1|v2,2]→[v1,Sep(2,1)|v2,Sep(2)]
17、reduceByKey算子 比combine简单,两个值合并成一个值。[v1,2|v1,1|v2,2]→[v1,3|v2,2]
18、partitionBy算子 会重新分区,shuffled。[v1,2|v2,1|w3,1], [v2,2|u1,1]→[v1,2|v2,1|v2,2], [w3,1], [u1,1]
两个RDD聚集
19、Cogroup算子 合并成一个RDD
三、连接
20、join算子
21、leftOutJoin和 rightOutJoin算子
3)Action算子
一、无输出
22、foreach算子
二、HDFS
23、saveAsTextFile算子
24、saveAsObjectFile算子
三、Scala集合和数据类型
25、collect算子
26、collectAsMap算子
27、reduceByKeyLocally算子
28、lookup算子
29、count算子
30、top算子
31、reduce算子
32、fold算子
33、aggregate算子