Spark小练习

统计出每一个省份每个广告被点击数量排行的Top3

val value = sparkContext.textFile("C:\\BaiduNetdiskDownload\\15.Spark\\2.资料\\data\\agent.log")
//分割转换map  ( ( 省份,广告 ), 1 )
val value1 = value.map(line => {
  var datas = line.split(" ");
  (((datas(1), datas(4)), 1))
})
//    数据聚合 ( ( 省份,广告 ), sum )
val value2: RDD[((String, String), Int)] = value1.reduceByKey(_ + _)
//    聚合得数据转换 ( 省份, ( 广告, sum ) )
val value3 = value2.map({
  case ((str1, str2), str3) => {
    (str1, (str2, str3))
  }
})
//    分组
val value4: RDD[(String, Iterable[(String, Int)])] = value3.groupByKey()
//取前三名
var resultRDD = value4.mapValues(iter => {
  iter.toList.sortBy(_._2)(Ordering.Int.reverse).take(3)
})
// 7. 采集数据打印在控制台
resultRDD.collect().foreach(println)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值