目录
2、filter(func)对元素进行过滤,筛选出符合自己需求的元素
8、subtract() 减去 ---->筛选,过滤其中的元素
10、intersection() 求交集,并去重,且无序返回
11、zip() 将两个RDD进行缝合 -->但要保证长度和分区相同
12、cogroupByKey() 将(K,V)和(K,W)返回(K,(V,W)) -->键一样的时候,对值进行合并
14、groupByKey() 当键相同时,将值返回到同一个集合中
17、join(otherDataset) 当键一样是对值进行操作
20、reduce(func) 通过func函数聚集RDD中所有的元素
21、collect() 以数组的形式返回数据集中的所有元素
26、takeOrdered() 返回前几个的排序 ---> 先排序在取
27、saveAsTextFile(path) 将文件进行保存
1、map(func)批处理
val r2 = r1.map(_ * 2) // r1里面的元素都 * 2 此外,还可以进行加减运算
val r2 = r1.map(_ + 7)
r2.collect().foreach(println) //通过collect()方法,使其转换为数组,输出的时按顺序输出
2、filter(func)对元素进行过滤,筛选出符合自己需求的元素
val r3 = r1.filter(_ % 2 == 0) //筛选出偶数
r3.collect().foreach(println)
val r4 = sc.makeRDD(Array("xiaoming", "xiaoli", "wanghua"))
val r5 = r4.filter(_.contains("xiao")) //表示包含xiao
val r5 = r4.filter(!_.contains("xiao")) //表示不包含xiao
r5.collect().foreach(println)
3、flatMap(func) 把元素分成最细的
val r6 = sc.textFile("src\\main\\java\\t1.txt")
val r7 = r6.flatMap(_.split(" ")) //通过空格进行分割
flatMap 和 Map 的对比
val r8 = r6.map(_.split(" "))
flat Map输出的为元素
Map输出的为数据类型 例如:[Ljava.lang.String;@5adbda7
4、groupBy 进行分组
val r9 = r1.groupBy(_ % 2 == 0)
r9.collect().foreach(println)
val rdd1 = r4.groupBy(word =>word(0)) //根据首字母是否相同进行分组
rdd1.collect().foreach(println)
5、sortBy 进行排序
val r10 = sc.makeRDD(List(2,4,1,8))
r10.collect().foreach(println) // 没有排序功能
r10.sortBy(x => x).collect().foreach(println) //对元素自身进行排序
6、union() 将两个RDD进行合并
r1.union(r10).sortBy(x=>x).collect().foreach(println)
7、distinct() 对元素进行去重
r1.union(r10).sortBy(x=>x).distinct().collect().foreach(println)
8、subtract() 减去 ---->筛选,过滤其中的元素
val r11 = r1.subtract(r3)
r11.collect().foreach(println)
9、sample 随机抽样
val r1 = sc.makeRDD(2 to 8)
val rdd1 = sc.makeRDD(4 to 12)
val r2 = r1.sample(true, 0.3) //true 会有重复的数,false抽取的没有重复的数
r2.collect().foreach(println)
10、intersection() 求交集,并去重,且无序返回
r1.intersection(rdd1).collect().foreach(println)
11、zip() 将两个RDD进行缝合 -->但要保证长度和分区相同
val rdd2 = sc.makeRDD(1 to 5, 2) //后面的2表示的是分区
val rdd3 = sc.makeRDD(Array("A", "B", "C", "D", "E"), 2)
val rdd4 = rdd3.zip(rdd2)
对键值对类型的算子进行操作
12、cogroupByKey() 将(K,V)和(K,W)返回(K,(V,W)) -->键一样的时候,对值进行合并
val r4 = sc.makeRDD(List(2, 4, 6, 88, 10), 2)
val rdd5 = rdd3.zip(r4)
val rdd6 = sc.makeRDD(Array("a", "b", "c", "D", "E"), 2)
val rdd5 = rdd6.zip(r4) //没有以a为键的,会显示为空 -->没有相同的键显示为空
rdd4.cogroup(rdd5).foreach(println) // r4中没有cogroup方法是因为r4没有键值对
val rdd5 = rdd3.zip(r4)
13、reduecByKey()
val rdd7 = rdd4.union(rdd5).union(rdd4)
rdd7.foreach(println)
rdd7.reduceByKey((x,y)=>(x+y).foreach(println) // (x,y) => x+y: (x,y)表示键相同时的不同的值,x+y 表示对值进行的操作
println(r4.reduce(_ + _)) //reduce 会直接输出结果,不用进行foreach操作
14、groupByKey() 当键相同时,将值返回到同一个集合中
区别:groupByKey() 和 cogroupByKey() 区别 :前者是对一个RDD进行操作,后者是对两个RDD进行操作
rdd7.groupByKey().collect().foreach(println)
val r7= sc.makeRDD(List(("a", 50), ("b", 0), ("c", 30), ("c", 90), ("b", 20), ("a", 80)))
r7.groupByKey().map(_._2).foreach(println) //_._2每个元素的第二位
r7.groupByKey().map(_._2.toList.sorted).foreach(println) //对其进行排序
r7.groupByKey().map(x=> (x._1,x._2.toList.sorted)).foreach(println)
15、sortByKey() 对键进行排序
val rx = sc.makeRDD(List(4, 12, 52, 123, 44, 32, 533),4)
val ry = sc.makeRDD(1 to 7)
rx.zip(ry).sortByKey().collect().foreach(println)
rx.sortBy(x => x).collect().foreach(println)
16、mapValues 对键值对的值进行操作
17、join(otherDataset) 当键一样是对值进行操作
与cogroup的区别是数据类型不一样
18、glom()将分区内的元素组成一个数组,分区不变
19、coalesce()对RDD进行重分区
println(rx.partitions.size)
//对rx进行重分区
val rx1 = rx.coalesce(2)
val rx1 = rx.repartition(2)
println(rx1.partitions.size)
repartition和coalesce使用场景
增加分区:repartition
减少分区:coalesce
20、reduce(func) 通过func函数聚集RDD中所有的元素
val r1 = sc.makeRDD(1 to 10)
println(r1.reduce(_+_))
val r2 = sc.makeRDD(Array(("a",1),("a",2),("c",3),("d",5)))
println(r2.reduce((x,y)=>(x._1+y._1,x._2+y._2)))
21、collect() 以数组的形式返回数据集中的所有元素
22、count() 统计RDD中的元素
println(r1.count())
23、first() 返回RDD中的第一个元素
println(r2.first())
24、take() 返回数据集中前N个元素
r1.take(3).foreach(println)
25、takeSample() 从RDD中随机取数据
r1.takeSample(2,3) --> 错在哪里
26、takeOrdered() 返回前几个的排序 ---> 先排序在取
val r3 = sc.makeRDD(List(1,55,48,46,52,45))
r3.takeOrdered(5).foreach(println)
27、saveAsTextFile(path) 将文件进行保存
28、countByKey() 统计键的个数