为什么先存到hbase而不是hive?
问题一:表里多个字段,比如时间分了24个小时字段,而不是里面规定好1到24的数值范围?
比如 stats_hourly表的设计
三个维度
platform_dimension_id
date_dimension_id
kpi_dimension_id
24列
hour00
hour01
hour02
...
hour23
数据维度分析
用户基本信息分析
基本信息
会话个数
会话长度
最后一个页面停留的时间无法知晓,可能会少算(不大影响)
平均会话长度
(和业务标准相比)太长,证明用户在该页面很难找到所求的目标
图形展示
数据比较 折线/柱状图
会话个数和会话长度的时间比较图
会话平均长度和用户平均会话时长
柱状图-大饼图展示
时间轴表示
时间趋势比较
浏览器分析
会话分析
会员分析
PV
同一页面的浏览量
用户增加相应的PV也增加
用户分析
地域维度分析
活跃访客地域分析
跳出率分析
分析各个不同地域的跳出率情况
单PV会话个数
会话个数
跳出率
订单分析模块
折线图和数字
订单个数
支付成功订单个数
退款订单个数
当天订单金额
当天支付金额
当天退款金额
到昨天为止,退款总金额
折线图
订单金额和退款金额
事件分析模块
漏斗图
选择购买
填写信息
下单
支付
外链数据分析模块
各个不同外链带来的用户访问量数据
外链偏好分析
百度
搜狗
yahoo
....
外链会话(跳出率)分析
实际情况:
0表示外链进入网站数据
1表示本网站跳转
1->0->……
0->1……
0->0->0->……
单PV会话
二次排序算法
用户访问深度分析模块
分析系统
数据展示层
分析数据层
数据获取(etl)
用户日志数据清洗
SDK埋点技术
JAVA
js SDK
使用script标签引入
在页面加载完成后执行js,js再进行js的加载
集成方式
nginx得到数据(pl=platform)
PC
IOS
Android
浏览器
注意:
不采用ip来标识用户的唯一性,通过cookie中填充一个uuid来标识用户的唯一性
解析后数据保存到hbase
方便查询并且列式的存储节省资源
数据分析
从hbase中读取日志数据
编写mr/hive的job进行数据分析
结果保存到mysql数据库
模块数据获得方法
用户基本信息分析
=用户浏览行为信息
pageview事件
pageview稍作修改可以完成的模块
外链数据信息和用户浏览深度分析
在pageview事件中添加访问页面的当前url和前一个页面的url来进行处理分析
浏览器信息分析
浏览器的window.navigator.userAgent
地域信息分析
nginx服务器收集用户的ip地址分析
订单信息分析
要求PC端发送一个订单产生的事件
需要一个新的事件chargeRequest
事件分析
需要一个新的事件数据 定义event
设置一个launch事件记录新用户的访问
不提供对外接口,第一次打开网页时就启动
只实现该事件的数据收集
子主题 3
数据存储
数据存储设计
原始的日志数据按天保存到hdfs
经过etl清洗后保存到hbase
将分析结果保存到mysql数据库中
数据设计重点
hbase
rowkey和时间戳
要求:列簇一般尽量的少而且短,采用log标示列簇
结果:单列簇的rowkey包含时间戳的eventlog表
rowkey:timestamp+uuid.hashcod+random(4)
mysql
维度信息表
存储维度相关信息
platform和date(用户基本信息)
用户基本信息模块
统计指标
会员
新增会员数目
活跃用户数
总会员数
会话
会话长度
会话个数
用户
新增用户数
活跃用户数
总用户数
维度信息id和create字都拿来标识修改时间
表名:stats_user
表名:stats_hourly
分时段的数据需求
浏览器信息模块
新增
pv
create
修改日期字段
表名:stats_device_browser
地域信息分析模块表
表设计
活跃用户数
会话个数
跳出会话个数 = 单pv
create
表名:stats_device_location
用户浏览深度分析模块表
计算不同数量页面的用户数/会话数
8个不同数量级指标
1
2
3
4
5-10
10-30
30-60
60+
+create
表名:stats_view_depth
外链信息分析模块表
外链(偏好)分析和跳出率分析
外链偏好
活跃用户数
总指标
活跃用户数
会话个数
跳出会话数
create
表名:stats_inbound
订单信息分析模块表
订单数量
订单金额
成功支付的订单数量
成功支付金额
退款订单数量
退款金额
总成功支付金额
总退款金额
create
事件分析模块表
主要分析事件触发次数
存储结构
times触发次数
create
按照最终统计的维度信息来看 8个
平台维度
地域维度
时间维度
支付方式维度
货币类型维度
外链维度
event维度
kpi维度
操作系统维度(os)--本次项目不会用到
名称格式:dimension_*
统计分析结果表
用户存储最终的统计将分析结果
用dimension维度id为主键,名称格式为:stats_*
分析辅助表
主要用户在分析过程中使用到的其它辅助类型表