如何使用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统计
...全文
4064 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)
项目一Spark离线处理本项目来源于企业级电商网站的大数据统计分析平台,该平台以 Spark 框架为核心,对电商网站的日志进行离线和实时分析。 该大数据分析平台对电商网站的各种用户行为(访问行为、购物行为、广告点击行为等)进行分析,根据平台统计来的数据,辅助公司中的 PM(产品经理)、数据分析师以及管理人员分析现有产品的情况,并根据用户行为分析结果持续改进产品的设计,以及调整公司的战略和业务。最终达到用大数据技术来帮助提升公司的业绩、营业额以及市场占有率的目标。 本项目使用了 Spark 技术生态栈中最常用的三个技术框架,Spark Core、Spark SQL 和 Spark Streaming,进行离线计算和实时计算业务模块的开发。实现了包括用户访问 session 分析、页面单跳转化率统计、热门商品离线统计、广告流量实时统计 4 个业务模块。通过合理的将实际业务模块进行技术整合与改造,该项目几乎完全涵盖了 Spark Core、Spark SQL 和 Spark Streaming 这三个技术框架中大部分的功能点、知识点,学员对于 Spark 技术框架的理解将会在本项目中得到很大的提高。 项目二Spark实时处理项目简介对于实时性要求高的应用,如用户即时详单查询,业务量监控等,需要应用实时处理架构项目场景对于实时要求高的应用、有对数据进行实时展示和查询需求时项目技术分别使用canal和kafka搭建各自针对业务数据库和用户行为数据的实时数据采集系统,使用SparkStreaming搭建高吞吐的数据实时处理模块,选用ES作为最终的实时数据处理结果的存储位置,并从中获取数据进行展示,进一步降低响应时间。 

1,261

社区成员

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

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