spark-map-flatMap-以及聚合操作

FaltMap算子与Map算子的区别:

    

、什么时候使用FlatMap 当数据是一条数据对应多条数据的时候使用

flatMap内的函数返回值必须是一个scala类型的集合才行

Map内的函数返回值是一个对象

聚合操作:

例子一:

使用reduceByKey,和mapValues计算每个键对应的平均值


val rdd = sc.parallelize(Seq(("panda", 0), ("pink", 3), ("pirate", 3), ("panda", 1),("pink",4)))

rdd.mapValues(x=>{(x,1)}).reduceByKey{case(x,y)=>(x._1+y._1,x._2+y._2)}.foreach(println)
  (panda,(0,1))
  (pink,(3,1))
   ...
  此时的x._1+y._1对应的是(key,(value1,value2))中的value1
  此时的x._2+y._2对应的是(key,(value1,value2))中的value2

输出结果:(panda,(1,2)),(pink,(7,2)),(pirate,(3,1))

例子二:

实现单词的计数

val input = sc.textFile("")
val words = input.flatMap(x => {
  x.split(" ")
})
words.map(x => (x, 1)).reduceByKey((x, y) => x + y)

猜你喜欢

转载自blog.csdn.net/qq_33982605/article/details/79834938
今日推荐