热点搜索词统计

热点搜索词统计

一、项目要求

1.根据用户上网的搜索记录对每天的热点搜索词进行统计,以了解用户所关心的热点话题。

二、要求完成

统计每天搜索数量前3名的搜索词(同一天中同一用户多次搜索同一个搜索词视为1次)。

代码如下(示例):

#读取数据文件
val rdd = sc.textFile("file:///export/data/keywords.txt")
#查看数据文件
rdd.collect()
#将每行记录映射为(date, user, keyword)的元组
val mappedRDD = rdd.map { record =>
|	val fields = record.split(",")
|	(fields(0), fields(1), fields(2))
}
#去除重复的搜索记录,以同一天中同一用户多次搜索同一个搜索词视为1次
val distinctRDD = mappedRDD.distinct()
#对每天每个搜索词进行计数
val countRDD = distinctRDD.map(record => ((record._1, record._3), 1)).reduceByKey(_ + _)
#将结果按日期分组
val groupedRDD = countRDD.map{ case ((date, keyword), count) => (date, (keyword, count))}.groupByKey()
#取出每天搜索数量前3名的搜索词
val top3RDD = groupedRDD.mapValues{ iter => iter.toList.sortBy(-_._2).take(3) }
#将结果按日期分组
val resultByDate = top3RDD.collectAsMap()
#输出结果
resultByDate.toSeq.sortBy(_._1).foreach { case (date, keywords) =>
       println(s"日期:$date")
      for ((keyword, count) <- keywords) {
        println(s"搜索词:$keyword,搜索次数:$count")
      }
      println()
     | }

输出结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值