需求
日志数据样例:
215.187.202.215 - - [1481945172991] “GET/IBEIfeng.gif?order_id=1&orderTime=1481945172991&memberId=1234568970080798&productInfos=10009-2703.88-B-1|10001-2494.47-D-2|10003-2561.05-A-1&orderAmt=10253.87 HTTP/1.1” 200 0 “-” “Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko)
字段:
变量名 | 对应数据 |
---|---|
ip | 用户ip |
serverTime | 服务器实际 |
requestUrl | 请求地址 |
httpRefer | 映射信息 |
userAgent | 用户信息 |
orderInfo | 订单信息 |
需求:
- 统计分析 每天、每小时、每分钟 各个IP访问量
- 统计 每天、每小时、每分钟 被访问的url 的次数
- 统计 外链数
- 解析userAgent获取得到 浏览器信息 操作系统信息,统计统计 每天、每小时、每分钟访问客户使用浏览器或者操作系统情况
- orderInfo order_id=2&orderTime=1481945173124&memberId=4958868887900989&productInfos=10001-217.40-B-1|10003-2561.05-A-1&orderAmt=2778.44
分析订单信息得到基于用户的消费情况
基于商品
统计销售额
处理流程
KafaSpout
负责从Kafka集群读取日志信息
LogParserBolt
将日志记录进行解析,抽取出所需的字段
数据传递:
RequestUrlParserBolt
抽取url,获取orderInfo
数据传递:
HttpReferParserBolt
数据传递:
UserAgentParserBolt
用户浏览器和操作系统的信息
数据传递:
CountUrlBolt
负责统计url
数据传递:
CountOutLinkBolt
统计外部链接
数据传递:
CountBrowserBolt
负责统计浏览器
数据传递:
CountSearchKeyBolt
负责统计搜索关键字
数据传递:
CountOsBolt
负责统计用户操作系统信息
数据传递:
CountIpBolt
统计用户的ip
数据传递:
SaveBolt
负责数据最后的保存
数据传递:
优化
上面有多个负责统计的CountXXXBolt,现在设计一个通用的CountKipBolt
即最后的流程如下: