Spark常用算子总结
// Transformation算子
1、map算子
接收一个函数,对于RDD中的每一个元素执行此函数操作,结果作为返回值。
val rdd = sc.parallelize(Array(1, 2, 3, 4), 1)
rdd.map(x => x*x).foreach(println) // 1 4 9 16
2、filter
接收一个函数,对于RDD中的每一个元素执行此函数操作,留下结果为true的项。
val rdd = sc.parallelize(Array(1, 2, 3, 4), 1)
rdd.filter(_>2).foreach(println) // 3 4
3、flatMap
和map差不多,只是对于每个输入项返回结果有多个,类似一对多映射。用wordCount的例子看:
sc.textFile(“test.txt”)
.flatMap(_.split(” “)) // 一对多映射,每行处理后返回多个单词
.map((_, 1)) // 每个单词映射成pairRDD
.reduceByKey(+)
.collect()
.foreach(println)
// 下面是4个集合操作
4、union
合并两个RDD
5、intersection
求两个RDD的交集
6、subtract
求两个RDD的差集
7、cartesian
求两个RDD的笛卡儿积
// Action算子
8、reduce
接收两个同类型的元素,返回一个同样类型的元素
val rd