统计出每一个省份每个广告被点击数量排行的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)


