項目綜述
在本次課程中,項目分別分為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 |
支付方式 |