zoukankan      html  css  js  c++  java
  • 大数据离线分析平台 需求分析(一)

    项目综述

    在本次课程中,项目分别分为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

    最终分析模块

    PCjs 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

    最终分析模块

    PCjs 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

    支付方式

  • 相关阅读:
    jvm的代码缓存耗尽导致性能下降
    几次印象深刻的网上事故
    是时候对十二年的工作回顾了!
    基于GitLab的前端Assets发布体系
    元数据简介
    JSON和JSONP
    Javascript模块规范
    Javascript编程风格
    Require JS
    JavaScript的AMD规范
  • 原文地址:https://www.cnblogs.com/Transkai/p/10722870.html
Copyright © 2011-2022 走看看