本帖最后由 我是楠楠 于 2018-10-10 16:23 编辑
【郑州校区】Storm学习笔记案例之点击流日志分析系统 用户在网站上操作的任何行为,都会被悄悄记录下来(以数据的方式)。 9.1、课程目标- 介绍点击流日志产生、收集、部署
- 集成点击流系统+Flume+Kafka+Storm+Redis
- 数据分析业务知识【重点】
- 学生动手开发一套流式计算的程序
我们想知道用户在网页中点击了哪些标签、每个标签被点击了多少次。 分析场景(一)-黑马程序员 分析场景(二)-京东商城 分析场景(三)-京东专题页分析 9.2、如何进行点击流日志分析答案:不一定,因为用户可以从其他地方访问这个url。 解决:最好的办法,当用户点击了‘云计算大数据’的标签,通过js代码向后台发送一个数据,这个数据就记录了用户点击过这个标签。 User info、标签唯一标识、点击事件、浏览器尺寸等等。 2) 如何给网页中一个标签设置一个唯一的标志? 京东:在京东上,通过给每个标签设置一个clstag用来标志标签的唯一性。 苏宁:苏宁是通过在每个标签上设置一个cms-name属性来标志标签的唯一性 国美:国美是通过在每个标签上这是一个data-code属性来标志标签的唯一性 淘宝:疑似通过data-groupid进行唯一标志 3) 如何通过js代码发送日志 京东:当用户点击或者浏览某个页面的时候,后台有js会发送类似于以下的信息给服务器。 4) 解析出点击流日志中的字段信息 1、来源URL ref 3、请求时间 reqTime (用户打开网站的时间) 4、操作类型 type (0:浏览操作,1:点击操作) 9、页面停留时间 10、用户IP地址 11、sessionID 12、用户的账号信息 13、点击什么东西 clstag 5、操作系统 6、浏览器的信息 br 7、屏幕尺寸 8、鼠标点击的位置 9.3、一些简单的数据分析需求1)计算“京东首页”中来自于百度的流量信息 Select count(*) from 点击表 where requestUrl = “京东首页” and refUrl =“百度”; 2)计算‘“京东首页”中来自于百度的流量信息中chrome浏览器占比 Select count(浏览器类型) from 点击流表 where requestUrl=”京东首页” and refUrl=“百度” group by 浏览器类型。 3)计算“京东首页”中来自于百度流量的信息中各省份的流量占比情况 需要些一个UDF函数,将IP地址转化成省市县信息。 新的挑战: 虽然通过sql语句可以很好的计算出各种数据分析的需求。 但是,一个网站需要分析的页面会很多需要分析、很多标签需要计算指标、很多新上线的页面和标签…… 解决办法: 开发一个自动计算指标的系统,由产品经理输入相关的判断条件,程序自动给出结果。解放程序员的双手。 9.4、业务逻辑梳理1)Storm部分 主要计算pv,uv KafkaSpout:读取点击流收集系统收集的日志信息。不同公司的日志信息不一样,需要通过nginx+lua对日志进行标准化。 \t分割。 EtlBolt :将数据解析成一个Java对象。Java对象中有很多字段,这些字段名称会显示在网页,给产品经理去选择。 ProcessBolt:读取数据库的所有Job信息,判断Job是否被触发(所有条件是否被满足)。如果触发了Job,就开始为Job计算pv,uv。 将结果保存到Redis中 2)app部分 主要计算增量数据 计算每个Job的pv的增量数据、uv的增量数据。以便展示在网页上称为一个趋势图。 1) 读取数据库中所有的Job信息。得到JobId,通过一定的规则生成redis的key,去获取最新的值。 2) 用最新的值,减去上一个时间点(分钟、十五分钟、半小时、1小时)的值。得到差值之后,将数据保存到数据库。 作用:解放了程序员的双手。要分析指标的时候,只需要产品经理在网页配置一下即可。 传智播客·黑马程序员郑州校区地址 河南省郑州市 高新区长椿路11号大学科技园(西区)东门8号楼三层
|