2016年大数据Spark“蘑菇云”行动代码学习之AdClickedStreamingStats模块分析

    系统背景:用户使用终端设备(IPAD、手机、浏览器)等登录系统,系统采用js脚本发送用户信息和广告点击信息到后台日志,进入flume监控,通过kafka消息中间件传输数据,由Spark Streaming消费后将信息存储到后台。本模块主要就是实现将kafka发送的信息进行过滤,动态更新黑名单,生成有效的广告点击数据,形成广告点击趋势,将相关信息通过数据库连接池写入数据库MySql。

    实现思路:由于kafka传输的广告点击数据中有一些是无效数据,需要根据一定的规则进行过滤(本方案采取简单的黑名单过滤的方式进行过滤,还可以采用机器学习的方式进行过滤——可以做一个大课题研究、大数据黄金岗位、下一步重点方向)。

在形成有效的广告点击数据后,按照天为单位,对广告点击次数进行累计,同时按照一天点击次数超过?次形成新的黑名单,持久化到后台。

对广告按照时间、省份、城市进行点击次数更新,然后插入或更新到MySql数据库。

由DataFrame的GroupBy,计算出每天每个省份的Top5排名的广告。

采用窗口函数reduceByKeyAndWindow计算过去半个小时内广告点击的趋势。

具体的流程如下:

  1. AdClickedStreamingStats模块流程图
  2. 初始化Spark的运行环境,加载必要的JAR包
  3. 设置kafka的参数(broker地址列表、Topics)
  4. 从kafka获取数据(time+IP+UserID+AdID+province+city)
  5. 从数据库获取黑名单信息(UserID),生成黑名单RDD,格式为map(UserID,true)
  6. 将广告点击数据按(UserID,字串流)形成广告点击RDD
  7. 广告点击RDD和黑名单RDD左外连接,形成UserID,(字串流,true或者为空)的RDD
  8. 从新的RDD过滤出用户名不在黑名单上的广告点击RDD(UserID,字串流)
  9. 累加有效的广告点击次数RDD

    ("time_IP_userID_adID_province_city",long)

  10. 根据一天内的点击次数,来过滤出有效的广告点击数

    (代码中一天内大于1次就过滤掉了?)

  11. 形成用户广告点击ListBuffer
  12. 插入或者更新用户广告点击数据

    (当天已有记录则将广告点击数累加后更新,否则插入)

  13. 根据当天、用户、广告,获得总的点击数,

    如果大于81次,形成新的黑名单

  14. 根据用户ID,进行黑名单去重操作并写入
  15. 按照日期+广告ID+省+市,形成新的广告点击RDD
  16. updateStateByKey,更新状态?
  17. 写入或更新广告点击数据(日期+广告+省+市+点击数)
  18. 按省进行Group by,然后查询出点击排名前5的广告
  19. 将当天+广告的TOP5数据库清空,然后插入新的数据
  20. 计算过去半小时广告点击的趋势

    形成(广告ID+Time)的DStream

  21. 根据滑动窗口(半小时、5分钟),计算出广告点击趋势
  22. 写入广告点击趋势数据
时间: 2024-10-12 12:35:22

2016年大数据Spark“蘑菇云”行动代码学习之AdClickedStreamingStats模块分析的相关文章

2016年大数据Spark“蘑菇云”行动之flume整合spark streaming

近期,听了王家林老师的2016年大数据Spark"蘑菇云"行动,需要将flume,kafka和Spark streaming进行整合. 感觉一时难以上手,还是先从简单着手吧:我的思路是这样的,flume产生数据,然后输出到spark streaming,flume的源数据是netcat(地址:localhost,端口22222),输出是avro(地址:localhost,端口是11111).Spark streaming的处理是直接输出有几个events. 一.配置文件 Flume 配

2016年大数据Spark“蘑菇云”行动之spark streaming消费flume采集的kafka数据Directf方式

王家林老师的课程:2016年大数据Spark"蘑菇云"行动之spark streaming消费flume采集的kafka数据Directf方式作业.     一.基本背景 Spark-Streaming获取kafka数据的两种方式Receiver与Direct的方式,本文介绍Direct的方式.具体的流程是这样的: 1.Direct方式是直接连接到kafka的节点上获取数据了. 2.基于Direct的方式:周期性地查询Kafka,来获得每个topic+partition的最新的offs

大数据Spark蘑菇云前传第15课:Scala类型参数编程实战及Spark源码鉴赏(学习笔记)

前传第15课:Scala类型参数编程实战及Spark源码鉴赏 本課課程: Spark源码中的Scala类型系統的使用 Scala类型系統编程操作实战 Spark源码中的Scala类型系統的使用 classOf[RDD[_]] 這個也是类型系統 這里的意思是說 B 這種類型必需至少是 A 這樣類型 Ordering Scala类型系統编程操作实战 作為類型系統最大的就可以對類型進行限制,在Scala 中的類型系統,他本身也作為對象.e.g. 我們可以建立 Person 這個類,現在可以建立一個什麼

大数据Spark蘑菇云前传第16课:Scala implicits编程彻底实战及Spark源码鉴赏(学习笔记)

本課課程: Spark源码中的Scala的 implicit 的使用 Scala的 implicit 编程操作实战 Scala的 implicit 企业级最佳实践 Spark源码中的Scala的 implicit 的使用 這個東西意義非常重大,RDD 本身沒有所謂的 Key, Value,只不過是自己本身解讀的時候把它變成 Key Value 的方法去解讀,RDD 本身就是一個 Record. RDD 本身沒有 reduceByKey,它是用了隐式转换,转换了PairRDDPartition 類

王家林 大数据Spark超经典视频链接全集[转]

压缩过的大数据Spark蘑菇云行动前置课程视频百度云分享链接 链接:http://pan.baidu.com/s/1cFqjQu SCALA专辑 Scala深入浅出经典视频 链接:http://pan.baidu.com/s/1i4Gh3Xb 密码:25jc DT大数据梦工厂大数据spark蘑菇云Scala语言全集(持续更新中) http://www.tudou.com/plcover/rd3LTMjBpZA/ 1 Spark视频王家林第1课:大数据时代的“黄金”语言Scala 2 Spark视

大数据Spark企业级实战

大数据Spark企业级实战 2015-02-12 14:42:46  来自: 我爱我家 大数据Spark企业级实战的评论     5 <大数据Spark企业级实战>从零起步,完全从企业处理大数据业务场景的角度出发,基于实战代码来组织内容,对于一名大数据爱好者来说,<大数据Spark企业级实战>内容可以帮助您一站式地完成从零起步到进行Spark企业级开发所需要的全部核心内容和实战需要.  在阅读此书时可以参考以下资料:    王家林<Spark把云计算大数据速度提高100倍以上

如何成为云计算大数据Spark高手

Spark是发源于美国加州大学伯克利分校AMPLab的集群计算平台,它立足于内存计算,性能超过Hadoop百倍,从多迭代批量处理出发,兼收并蓄数据仓库.流处理和图计算等多种计算范式,是罕见的全能选手.Spark采用一个统一的技术堆栈解决了云计算大数据的如流处理.图技术.机器学习.NoSQL查询等方面的所有核心问题,具有完善的生态系统,这直接奠定了其一统云计算大数据领域的霸主地位. 伴随Spark技术的普及推广,对专业人才的需求日益增加.Spark专业人才在未来也是炙手可热,轻而易举可以拿到百万的

Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈与熟练的掌握Scala语言【大数据Spark

Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈 大数据的概念与应用,正随着智能手机.平板电脑的快速流行而日渐普及,大数据中图的并行化处理一直是一个非常热门的话题.图计算正在被广泛地应用于社交网络.电子商务,地图等领域.对于图计算的两个核心问题:图存储模式和图计算模型,Spark GraphX给出了近乎完美的答案, 而Spark GraphX作为图计算领域的屠龙宝刀,对Pregel  API的支持更是让Spark GraphX如虎添翼.Spark GraphX可以轻而易举的完成基于度分布

以慕课网日志分析为例 进入大数据 Spark SQL 的世界

详情请交流  QQ  709639943 01.以慕课网日志分析为例 进入大数据 Spark SQL 的世界 02.漫谈spring cloud分布式服务架构 03.Spring Cloud微服务实战视频课程 04.漫谈spring cloud 与 spring boot 基础架构 05.Java秒杀系统方案优化 高性能高并发实战 06.Java深入微服务原理改造房产销售平台 07.快速上手Linux 玩转典型应用 08.快速上手Ionic3 多平台开发企业级问答社区 09.Java Sprin