如何使用spark统计某个value的出现次数,并且统计出出现次数最多的value

qq_16046321 2018-01-03 06:39:59
例如原数据为:
("aaa","aa")
("aaa","aa")
("aaa","cc")
("bbb","dd")
("bbb","dd")
("bbb","dd")

计算后结果:
("aaa",(("aa",2),("cc",1)))
("bbb",(("dd",3)))

可知:
在key为aaa的数据中,aa出现次数最多,出现2次
在key为bbb的数据中,dd出现次数最多,出现3次

PS:如使用MapReduce则只需要在reduce阶段做一个map来统计即可,但是本人初学spark,不太清楚该如何用spark统计
...全文
4058 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_16046321 2018-01-18
  • 打赏
  • 举报
回复
额,明白您的意思了,我开始没用sc.parallelize加载list,非常感谢
张某码 2018-01-17
  • 打赏
  • 举报
回复

val  windowWordCounts = sc.parallelize(List("aaa"->"aa","aaa"->"aa","aaa"->"cc","bbb"->"dd","bbb"->"dd","bbb"->"dd"))
val mapedRdd = windowWordCounts.map(rdd=>{
      val key = rdd._1+"_"+rdd._2
      (key,1L)
    })
  val reduceRDD = mapedRdd.reduceByKey(_+_)
 val res =  reduceRDD.collect
结果为 Array((bbb_dd,3), (aaa_aa,2), (aaa_cc,1))
张某码 2018-01-17
  • 打赏
  • 举报
回复
引用 2 楼 qq_16046321 的回复:
[quote=引用 1 楼 zhang5059 的回复:] 你如果只是想知道在 “key为aaa的数据中,aa出现次数最多,出现2次” 可以这样
 
val mapedRdd = windowWordCounts.map(rdd=>{
      val key = rdd._1+"_"+rdd._2
      (key,1L)
    })
  val reduceRDD = mapedRdd.reduceByKey(_+_)
reduceRDD 这个RDD中的数据 就是 (aaa_aa 2)(aaa_cc 1)(bbb_bb 3)
mapedRdd无法用reduceByKey这个方法啊,只能用reduce这个方法,我试了scala2.10和2.13都不行[/quote] 如果你的RDD不是键值对那么是不能用 reduceByKey算子的
qq_16046321 2018-01-17
  • 打赏
  • 举报
回复
引用 1 楼 zhang5059 的回复:
你如果只是想知道在 “key为aaa的数据中,aa出现次数最多,出现2次” 可以这样
 
val mapedRdd = windowWordCounts.map(rdd=>{
      val key = rdd._1+"_"+rdd._2
      (key,1L)
    })
  val reduceRDD = mapedRdd.reduceByKey(_+_)
reduceRDD 这个RDD中的数据 就是 (aaa_aa 2)(aaa_cc 1)(bbb_bb 3)
mapedRdd无法用reduceByKey这个方法啊,只能用reduce这个方法,我试了scala2.10和2.13都不行
张某码 2018-01-16
  • 打赏
  • 举报
回复
你如果只是想知道在 “key为aaa的数据中,aa出现次数最多,出现2次” 可以这样
 
val mapedRdd = windowWordCounts.map(rdd=>{
      val key = rdd._1+"_"+rdd._2
      (key,1L)
    })
  val reduceRDD = mapedRdd.reduceByKey(_+_)
reduceRDD 这个RDD中的数据 就是 (aaa_aa 2)(aaa_cc 1)(bbb_bb 3)

1,258

社区成员

发帖
与我相关
我的任务
社区描述
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
社区管理员
  • Spark
  • shiter
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧