欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

(4)sparkRDD算子练习

时间:2023-04-19

1)数据准备
agent.log:时间戳,省份,城市,用户,广告,中间字段使用空格分隔。
2)需求描述
统计出每一个省份每个广告被点击数量排行的Top3

// TODO 需求: 统计出每一个省份 广告被点击数量排行的Top3 val agentRdd = sc.textFile("Input/sparkCore/agent.log") agentRdd .map(line=>{ val datas = line.split(" ") ((datas(1),datas(4)),1) //((省份,广告),1) }) .reduceByKey(_+_) //((省份,广告),sum) .map{ case ((pro,ad),sum) => (pro,(ad,sum)) //(省份,(广告,sum)) } .groupByKey() //(省份,iterator((广告,sum),(广告,sum),...)) .mapValues(iter =>{ iter.toList.sortBy(_._2)(Ordering.Int.reverse).take(3) //降序排列 取前三 }) // (省份,top3(广告,sum)) .collect().foreach(println)

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。