1、数据准备

数据格式:时间戳,省份,城市,用户,广告,中间字段使用空格分隔。
数据的粒度是用户,每一条数据是用户在何时何地点击了广告。

1516609143867 6 7 64 16
1516609143869 9 4 75 18
1516609143869 1 7 87 12
1516609143869 2 8 92 9
1516609143869 6 7 84 24
1516609143869 1 8 95 5
1516609143869 8 1 90 29
1516609143869 3 3 36 16
1516609143869 3 3 54 22
1516609143869 7 6 33 5
1516609143869 8 2 91 27
1516609143869 0 5 66 5
1516609143869 1 3 33 6
1516609143869 6 2 97 21
1516609143869 5 2 95 24
1516609143869 8 9 73 11
1516609143869 4 8 62 15
1516609143869 5 5 40 23
1516609143869 6 6 53 17
1516609143869 3 0 86 21
1516609143869 4 6 1 11
1516609143869 3 6 49 7
1516609143869 8 3 4 18
1516609143869 8 8 69 14
1516609143869 0 6 51 29
1516609143869 5 3 59 2
1516609143869 8 4 66 25
1516609143869 3 4 63 9
1516609143869 0 8 8 15
1516609143869 0 6 91 17
1516609143869 0 1 18 24
1516609143869 1 4 44 15
1516609143869 1 3 54 13
1516609143869 1 3 30 3
1516609143871 9 6 65 11
1516609143871 0 9 9 19
1516609143871 4 0 32 20
1516609143871 2 1 28 26
1516609143871 5 2 68 24
1516609143871 8 6 58 3
1516609143871 6 7 95 14
1516609143871 7 2 33 27
1516609143871 4 1 16 13
1516609143871 2 2 68 28
1516609143871 5 0 71 19
1516609143871 8 5 66 7
1516609143871 4 4 31 0
1516609143871 9 9 79 18
1516609143871 9 0 69 10
1516609143871 9 6 92 4
1516609143871 8 1 41 4
1516609144913 1 3 87 28
1516609144913 8 0 2 5
1516609144913 5 9 46 23
1516609144913 4 0 7 24
1516609144913 9 5 99 11
1516609144913 7 1 36 16
1516609144913 2 3 96 13
1516609144913 3 1 31 10
1516609144913 0 9 20 27
1516609144913 2 9 41 19
1516609144913 3 3 21 19
1516609144913 3 2 19 28
1516609144913 6 3 61 9
1516609144913 8 1 83 27
1516609144913 9 0 26 20
1516609144913 2 1 38 11
1516609144913 5 6 52 7
1516609144913 6 6 80 19
1516609144913 4 9 83 6
1516609144913 9 1 13 0
1516609144913 4 6 36 26
1516609144913 5 4 20 17
1516609144913 6 9 6 4
1516609144913 7 4 88 22
1516609144913 6 6 99 22
1516609144913 2 9 9 4
1516609144913 6 6 62 8
1516609144913 2 1 62 5
1516609144913 4 3 4 23
1516609144913 7 2 90 26
1516609144913 3 4 17 9
1516609144913 2 5 64 14
1516609144913 1 5 57 3
1516609144913 3 9 36 14
1516609144913 4 3 49 9
1516609144913 5 7 37 15
1516609144913 9 2 28 1
1516609144913 6 3 74 3
1516609144913 9 9 93 27
1516609144913 6 7 67 22
1516609144913 5 0 53 24
1516609144913 9 1 68 27
1516609144913 0 0 99 5
1516609144913 0 6 22 15
1516609144913 7 3 54 6
1516609144913 2 8 47 26
1516609144913 3 1 19 2
1516609144913 2 6 12 21
1516609144913 0 4 65 27

2、需求介绍

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

3、编写代码

package spark.core.demoimport org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD/*** 需求:统计出每一个省份每个广告被点击数量排行的 Top3*/
object Demo {def main(args: Array[String]): Unit = {val sparkConf = new SparkConf().setMaster("local[*]").set("spark.driver.host", "localhost").setAppName("rdd")val sc = new SparkContext(sparkConf)// 1、创建 RDD// 数据格式:时间戳、省份、城市、用户、广告,以空格隔开val rdd1: RDD[String] = sc.textFile("input/agent.log")// 2、转换数据类型// 数据格式:(省份-广告,1)val rdd2: RDD[(String, Int)] = rdd1.map(line => {(line.split(" ")(1) + "_" + line.split(" ")(4), 1)})// 3、对数据进行聚合// 数据格式:(省份-广告,sum值)val rdd3: RDD[(String, Int)] = rdd2.reduceByKey(_ + _)// 4、对数据进行格式转换// 数据格式:(省份,(广告,sum值))val rdd4: RDD[(String, (String, Int))] = rdd3.map(data => {(data._1.split("_")(0), (data._1.split("_")(1), data._2))})// 5、对省份再进行聚合// 数据格式:(省份,((广告,sum值)、(广告,sum值)...))val rdd5: RDD[(String, Iterable[(String, Int)])] = rdd4.groupByKey()// 6、选择 top3val result: RDD[(String, List[(String, Int)])] = rdd5.mapValues(iter => {iter.toList.sortWith((left, right) => {left._2 > right._2}).take(3)})result.foreach(println)sc.stop()}
}

运行结果:

Spark 算子使用案例 -- 统计广告点击量 Top3相关推荐

  1. 114.Spark大型电商项目-广告点击流量实时统计-使用高性能方式将实时计算结果写入MySQL中

    目录 误区 Spark Streaming foreachRDD的正确使用方式 对于这种实时计算程序的mysql插入,有两种pattern(模式) 代码 AdUserClickCount.java I ...

  2. Spark Streaming 项目实战 (4) | 得到最近1小时广告点击量实时统计并写入到redis

      大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

  3. web实现统计网页点击量

    web实现统计网页点击量 下面是我写的网页HTML文件 源代码Hello world: package runoob; import java.io.*; import javax.servlet.* ...

  4. 112.Spark大型电商项目-广告点击流量实时统计-需求分析、技术方案设计以及数据设计

    目录 需求分析 技术方案设计 数据表设计 ad_user_click_count //用户点击广告表 ad_blacklist //用户黑名单 ad_stat  //广告状态表 ad_province ...

  5. kaggle案例:广告点击率预估+LR

    一.业务背景 传统广告与在线广告区别? 传统广告: 类似电视广告,报纸媒体.杂志.广播.户外媒体等. 在线广告: 类似百度搜索广告,facebook页面展示广告. 区别:在线广告更多与用户相关,例,在 ...

  6. 页面点击率统计java_JSP点击量(访问量)统计实例

    在本章中,我们将在JSP中讨论如何实现点击量统计. 点击计数器用于统计有关网站的特定页面上的访问次数.假设人们首先登陆网站主页,通常是index.jsp页面中有点击计数器. 要实现一个点击计数器,可使 ...

  7. 广告点击量与广告展现量的区别

    在广告推广后台可以看到消费记录.平均价格.点击.展现.点击率等数据,这些数据是你全面评估推广效果.深入开展推广优化的基础. 上网用户如果搜索或查询的关键词与你推广的匹配,该关键词所对应的创意将出现在搜 ...

  8. 广告点击率预测_精品案例|在线广告点击率预测

    目录 数据说明 数据查看 数据预处理   3.1 处理非数值特征 初步建立模型查看效果 探索性分析和特征工程   5.1 特征分布可视化   5.2 处理取值不均匀特征   5.3 特征相关性 模型训 ...

  9. Spark算子综合案例

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.第1关:WordCount - 词频统计 二.第2关:friend recommendation - 好友推荐 总 ...

最新文章

  1. CNS接连发文背书,原来生姜这么神奇
  2. 代码编辑器——sublime
  3. SQL中几个比较重要的系统表
  4. 数据源(连接池)开发步骤
  5. 协议簇:TCP 解析: 基础
  6. 酷狗笔试题:补齐左括号(栈)
  7. 视频转换器Prism Plus for mac轻松转换视频!
  8. matlab 维纳滤波器算法实现
  9. 如何将gif动图分解成png格式?动图分解器如何使用?
  10. 程序员5种编程入门方法,如何快速学会一门编程语言?
  11. 那些花儿(吉他版) --朴树
  12. 2022/7/23 日记
  13. 【Axure教程】拖动排序——扣款顺序
  14. 51单片机+oled+ds18b20检测并显示温度第三篇:配置温度检测ds18b20
  15. require() - NodeJS
  16. 基于Neo4j的关联数据评估风险投资人业绩
  17. 遍地都是大学生,如何在职场中脱颖而出?
  18. 面部属性预测增强的深层识别网络
  19. K210 Mx-yolov3模型训练和物体识别
  20. catia装服务器不显示不出来,CATIAV5无法显示略缩图怎么办?CATIAV5无法显示略缩图的原因分析和解决方案...

热门文章

  1. 泛微OA E9 weaver.conn.util.ProcChecker java.lang.ClassNotFoundException: com.weaver.procedure. 报错
  2. Bluehost美国站和Bluehost中国站的区别!
  3. java 冬季运动会_2015关于冬天的作文:寒冷的冬天续写
  4. 记忆方法与快速阅读——最基础的快速阅读
  5. 带著一颗心、浪迹天涯
  6. 服务器如何配置ssl证书
  7. Snipaste工具推荐
  8. CentOS7中MySQL5.7 主主互备配置
  9. 使用opencv按图片修改时间进行图片读取
  10. ❤️爆肝3万字,最硬核丨Mysql 知识体系、命令全集 【建议收藏 】❤️