大数据Spark入门案例5–统计每广告点击数量排行Top3(scala版本)
1 数据准备
链接:https://pan.baidu.com/s/1afzmL-hNsAJl1_gx_dH2ag
提取码:yybi
2 需求分析
3 功能实现
package com.root.opeartor
import org.apache.spark.{SparkConf, SparkContext}
object test {
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setMaster("local").setAppName("RDD")
val sc = new SparkContext(sparkConf)
val data = sc.textFile("data/agent.log")
//省份位于切割字符第1个,广告位于第4个
//转换数据格式((省份,广告),1),方便统计当前省份当前广告的数量
val testdata = data.map(line => {
val datas = line.split(" ")
((datas(1), datas(4)),1)
})
//将相同key(省份,广告)的value相加,统计相同key总量
val testdata1 = testdata.reduceByKey(_ + _)
//转化数据形式((省份,广告),sum)-->((省份,(广告,sum)),方便分组
val testdata2 = testdata1.map(k => {(k._1._1, (k._1._2, k._2))})
//将相同省份key进行分组
val testdata3 = testdata2.groupByKey()
//对每个省份内部的广告点击数进行排序,并取排行前三的广告
val testdata4 = testdata3.mapValues(iter => {iter.toList.sortBy(_._2)(Ordering.Int.reverse).take(3)})
//对省份进行排序
val testdata5 = testdata4.sortByKey()
testdata5.collect().foreach(println)
}
}
4 输出
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。