大数据离线分析平台 需求分析(一)
项目综述
在本次课程中,项目分别分为bigdata_track,bigdata_transforer和bigdata_dataapi。本次项目主要以分析七个模块的数据,分别为用户基本信息分析、操作系统分析、地域信息分析、用户浏览深度分析、外链数据分析、订单信息分析以及事件分析。那么针对不同的分析模块,我们又不同的用户数据需求,所以我们在bigdata_track项目中提供不同的客户端来收集不同的数据。在bigdata_transformer中分别采用hive+mr两种方式进行数据分析。在bigdata_dataapi中进行分析结果的api提供以及结果图表展示。
收集系统(bigdata_track)总述
我们需要将用户浏览的数据采集到我们的存储系统(hdfs)中,那么在本次课程中,我们只收集pc端数据和程序后台的部分数据。在pc端我们通过集成js来收集用户浏览行为数据;在程序后台,通过集成java的jar文件来收集我们需要的数据。在这里只考虑java开发环境。js/jar将收集的数据发送到nginx,然后flume监控nginx日志,将数据写入到hdfs中。
收集系统(bigdata_track)结构
java sdk
由于本次课程中涉及到的七个模块数据,只有订单信息的分析由于需要明确是否进行支付,那么需要程序后台发送消息通知,故这里只有该订单分析模块需要在后台程序中调用。
一、概述
该文档的主要作用是为了开发人员参考可以参考本文档,了解java sdk的集成方式以及提供的各种不同的方法。注意:由于在本次项目中java sdk的作用主要就是发送支付成功/退款成功的信息给nginx服务器,所有我们这里提供的是一个简单版本的java sdk。
二、Java sdk执行工作流
工作流如下所示:(退款类似)
三、分析
1、程序后台事件分析
本项目中在程序后台只会出发chargeSuccess事件,本事件的主要作用是发送订单成功的信息给nginx服务器。发送格式同pc端发送方式, 也是访问同一个url来进行数据的传输。格式为:
http://track.beifeng.com/static/bigdataimg.jpg?requestdata
最终分析模块 |
PC端js sdk事件 |
订单信息分析 |
chargeSuccess事件 chargeRefund事件 |
a)chargeSuccess事件
当会员最终支付成功的时候触发该事件,该事件需要程序主动调用。
方法名称 |
onChargeSuccess |
||
发送的数据 |
u_mid=gerryliu&c_time=1449142044528&oid=orderid123&ver=1&en=e_cs&pl=jdk&sdk=java |
||
参数 |
类型 |
是否必填 |
描述 |
orderId |
string |
是 |
订单id |
memberId |
string |
是 |
会员id |
b)chargeRefund事件
当会员进行退款操作的时候触发该事件,该事件需要程序主动调用。
方法名称 |
onChargeRefund |
||
发送的数据 |
u_mid=gerryliu&c_time=1449142044528&oid=orderid123&ver=1&en=e_cr&pl=jdk&sdk=java |
||
参数 |
类型 |
是否必填 |
描述 |
orderId |
string |
是 |
订单id |
memberId |
string |
是 |
会员id |
2、集成方式
直接将java的sdk引入到项目中即可,或者添加到classpath中。
3、数据参数说明
参数描述如下:
参数名称 |
类型 |
描述 |
en |
string |
事件名称, eg: e_cs |
ver |
string |
版本号, eg: 0.0.1 |
pl |
string |
平台, eg: website |
sdk |
string |
Sdk类型, eg: java |
u_mid |
string |
会员id,和业务系统一致 |
c_time |
string |
客户端时间 |
oid |
string |
订单id |
js sdk
由于我们本次项目的重点就是分析pc端的数据,所以我们最终分析的七个模块基本上都需要从pc端获取不同的数据。
四、概述
该文档的主要作用是为了开发人员参考可以参考本文档,了解js sdk的集成方式以及提供的各种不同的api。
注意:不采用ip来标示用户的唯一性,我们通过在cookie中填充一个uuid来标示用户的唯一性。
五、Js sdk执行工作流
在我们的js sdk中按照收集数据的不同分为不同的事件,比如pageview事件等。Js sdk的执行流程如下:
六、分析
4、PC端事件分析
针对我们最终的不同分析模块,我们需要不同的数据,接下来分别从各个模块分析,每个模块需要的数据。用户基本信息就是用户的浏览行为信息分析,也就是我们只需要pageview事件就可以了;浏览器信息分析以及地域信息分析其实就是在用户基本信息分析的基础上添加浏览器和地域这个维度信息,其中浏览器信息我们可以通过浏览器的window.navigator.userAgent来进行分析,地域信息可以通过nginx服务器来收集用户的ip地址来进行分析,也就是说pageview事件也可以满足这两个模块的分析。外链数据分析以及用户浏览深度分析我们可以在pageview事件中添加访问页面的当前url和前一个页面的url来进行处理分析,也就是说pageview事件也可以满足这两个模块的分析。订单信息分析要求pc端发送一个订单产生的事件,那么对应这个模块的分析,我们需要一个新的事件chargeRequest。对于事件分析我们也需要一个pc端发送一个新的事件数据,我们可以定义为event。除此之外,我们还需要设置一个launch事件来记录新用户的访问。
Pc端的各种不同事件发送的数据url格式如下,其中url中后面的参数就是我们收集到的数据:http://track.beifeng.com/static/bigdataimg.jpg?requestdata
最终分析模块 |
PC端js sdk事件 |
用户基本信息分析 |
pageview事件 |
浏览器信息分析 |
|
地域信息分析 |
|
外链数据分析 |
|
用户浏览深度分析 |
|
订单信息分析 |
chargeRequest事件 |
事件分析 |
event事件 |
|
launch事件 |
c)Launch事件
当用户第一次访问网站的时候触发该事件,不提供对外调用的接口,只实现该事件的数据收集。
方法名称 |
- |
发送的数据 |
u_sd=8E9559B3-DA35-44E1-AC98-85EB37D1F263&c_time=1449137597974&ver=1&en=e_l&pl=website&sdk=js&b_rst=1920*1080&u_ud=12bigdata4079-223E-4A57-AC60-C1A04D8F7A2F&b_iev=Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20WOW64)%20AppleWebKit%2F537.1%20(KHTML%2C%20like%20Gecko)%20Chrome%2F21.0.1180.77%20Safari%2F537.1&l=zh-CN |
d)Pageview事件
当用户访问页面/刷新页面的时候触发该事件。该事件会自动调用,也可以让程序员手动调用。
方法名称 |
onPageView |
发送的数据 |
ver=1&en=e_pv&pl=website&sdk=js&b_rst=1920*1080&u_ud=12bigdata4079-223E-4A57-AC60-C1A04D8F7A2F&b_iev=Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20WOW64)%20AppleWebKit%2F537.1%20(KHTML%2C%20like%20Gecko)%20Chrome%2F21.0.1180.77%20Safari%2F537.1&l=zh-CN&u_sd=8E9559B3-DA35-44E1-AC98-85EB37D1F263&c_time=1449137597979&ht=www.beifeng.com%3A8080&p_url=http%3A%2F%2Fwww.beifeng.com%3A8080%2Fvst_track%2Findex.html |
e)chargeRequest事件
当用户下订单的时候触发该事件,该事件需要程序主动调用。
方法名称 |
onChargeRequest |
||
发送的数据 |
u_sd=8E9559B3-DA35-44E1-AC98-85EB37D1F263&c_time=1449139048231&oid=orderid123&on=%E4%BA%A7%E5%93%81%E5%90%8D%E7%A7%B0&cua=1000&cut=%E4%BA%BA%E6%B0%91%E5%B8%81&pt=%E6%B7%98%E5%AE%9D&ver=1&en=e_cr&pl=website&sdk=js&b_rst=1920*1080&u_ud=12bigdata4079-223E-4A57-AC60-C1A04D8F7A2F&b_iev=Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20WOW64)%20AppleWebKit%2F537.1%20(KHTML%2C%20like%20Gecko)%20Chrome%2F21.0.1180.77%20Safari%2F537.1&l=zh-CN |
||
参数 |
类型 |
是否必填 |
描述 |
orderId |
string |
是 |
订单id |
orderName |
String |
是 |
产品购买描述名称 |
currencyAmount |
double |
是 |
订单价格 |
currencyType |
String |
是 |
货币类型 |
paymentType |
String |
是 |
支付方式 |
f)Event事件
当访客/用户触发业务定义的事件后,前端程序调用该方法。
方法名称 |
onEventDuration |
||
发送的数据 |
ca=%E7%B1%BB%E5%9E%8B&ac=%E5%8A%A8%E4%BD%9C&c_time=1449139512665&u_sd=8E9559B3-DA35-44E1-AC98-85EB37D1F263&kv_p_url=http%3A%2F%2Fwww.beifeng.com%3A8080%2Fvst_track%2Findex.html&kv_%E5%B1%9E%E6%80%A7key=%E5%B1%9E%E6%80%A7value&du=1000&ver=1&en=e&pl=website&sdk=js&b_rst=1920*1080&u_ud=12bigdata4079-223E-4A57-AC60-C1A04D8F7A2F&b_iev=Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20WOW64)%20AppleWebKit%2F537.1%20(KHTML%2C%20like%20Gecko)%20Chrome%2F21.0.1180.77%20Safari%2F537.1&l=zh-CN |
||
参数 |
类型 |
是否必填 |
描述 |
category |
string |
是 |
自定义事件名称 |
action |
String |
是 |
自定义事件动作 |
map |
map |
否 |
其他参数 |
duration |
long |
否 |
事件持续时间 |
5、其他api方法
在这里只介绍设置会员id的方法,其他的辅助方法到时候编写js的时候再介绍。
a)设置会员id
方法名称 |
setMemberId |
||
方法描述 |
该方法的主要作用是设置会员id,当会员登录后,请调用该方法进行会员id的设置。 |
||
参数 |
类型 |
是否必填 |
描述 |
memberid |
string |
是 |
会员id |
6、集成方式
Js sdk的集成分为两种方式,第一种是直接使用script标签引入js,第二种是在页面加载完成后执行js代码,js代码再进行js的加载。如下:
第一种: <script src=”//track.beifeng.com/analytics.js”></script>
第二种: <script type=”text/javascript”> var _aelog_ = _aelog_ || []; // 设置_aelog_相关属性 (function(){ var aejs = document.createElement('script'); aejs.type = 'text/javascript'; aejs.async = true; aejs.src = '//track.beifeng.com/analytics.js'; var script = document.getElementsByTagName('script')[0]; script.parentNode.insertBefore(aejs, script); })(); $(); </script> |
7、数据参数说明
在各个不同事件中收集不同的数据发送到nginx服务器,但是实际上这些收集到的数据还是有一些共性的。下面将所用可能用到的参数描述如下:
参数名称 |
类型 |
描述 |
en |
string |
事件名称, eg: e_pv |
ver |
string |
版本号, eg: 0.0.1 |
pl |
string |
平台, eg: website |
sdk |
string |
Sdk类型, eg: js |
b_rst |
string |
浏览器分辨率,eg: 1800*678 |
b_iev |
string |
浏览器信息useragent |
u_ud |
string |
用户/访客唯一标识符 |
l |
string |
客户端语言 |
u_mid |
string |
会员id,和业务系统一致 |
u_sd |
string |
会话id |
c_time |
string |
客户端时间 |
p_url |
string |
当前页面的url |
p_ref |
string |
上一个页面的url |
tt |
string |
当前页面的标题 |
ca |
string |
Event事件的Category名称 |
ac |
string |
Event事件的action名称 |
kv_* |
string |
Event事件的自定义属性 |
du |
string |
Event事件的持续时间 |
oid |
string |
订单id |
on |
string |
订单名称 |
cua |
string |
支付金额 |
cut |
string |
支付货币类型 |
pt |
string |
支付方式 |