您的位置:首页 > 运维架构 > 网站架构

005 执行mapreduce加强,利用hive统计分析电商网站用户行为指标

2015-09-24 18:00 736 查看
采用hadoop+hive+hbase实现了用户行为分析,下面业务需求和相关指标分享给大家,后续准备改造成storm实时统计分析。大家若有兴趣可以关注

问题:如何利用hadoop大数据平台,结合hive离线处理日志,根据业务需求统计入库。
前提:已经安装hadoop2.x,hive,zookeeper,jdk。若没有安装完成请参考:

hadoop介绍:/article/3682419.html
hive介绍:http://blog.csdn.net/shenfuli/article/category/5017631
zookeeper介绍: http://blog.csdn.net/shenfuli/article/category/1442295

项目需求背景
为更好的支撑电商系统的运营,搭建大数据分析平台。数据分析监控系统功能展示搜索、来源分析、礼品分类整体兑换量、首页各屏数据占比、地区用户访问、兑换等数据分析、活跃率分析

专业术语解释
(1)UV(Unique Visitor)独立访客

将每台独立上网电脑(以cookie为依据)视为一位访客,一天之内(00:00-24:00)访问商城的访客数量。一天之内相同cookie的访问只被计算1次。独立访问者、独立访客、独立用户、唯一用户和唯一访问者是同一术语。

(2)PV(Page View)访问量

即页面浏览量或者点击量,用户每次对网站的访问均被记录1次。用户对同一页面的多次访问,访问量值累计。

(3)独立IP数

00:00-24:00内相同IP地址只被计算一次。

(4)平均访问页面数

指选择时间范围内,每个访客浏览网站页面的平均次数。人均浏览次数=PV/UV。

(5)IP质量

根据人均PV的数值来评价某个来源、某个关键字、某个访客的质量和价值。通过对互联网数据的大量统计,确定了评判IP质量的准确的依据。人均PV越高,IP质量就越好,也就表明该来源下访客的忠诚度越好。

(6)在线人数

5分钟内在线访问的UV数。

(7)访问深度

在一次完整的站点访问过程中,访客所浏览的页面数。

(8)停留时间

停留时间是指用户访问积分商城网站的时间长短,即用户打开商城的最后一个页面的时间点减去打开商城第一个页面的时间点。

(9)人均站内停留时间

所有访客的访问过程,访问持续时间的平均值。

(10)当前访客活跃度

是指商城网站上当前访客的多少,它在一定程度反应了商城网站在当前时间的受欢迎程度。

(11)回访人数

某个cookie的再次访问计为一个回访客,它的数目即为回访人数。

(12)回访率

回访访客占所有访客的比例,主要用于揭示网站访问者对网站的忠诚度。

(13)新增访问

某个cookie的首次访问计为一个新访客。

(14)回访次数

是指某个cookie除第一次访问之后,又访问商城网站的次数。

(15)访问路径

每个访问者从进入商城网站开始访问,一直到最后离开商城网站,整个过程中先后浏览的页面称为访问路径。

(16)访问频度

是指商城网站上访问者每日访问的频度,用于揭示商城网站内容对访问者的吸引程度。

(17)点击次数:

是指用户点击页面上链接的次数。

(18)登入数:

是指登入用户的人数

(19)跳出率:

跳出率=浏览了一个页面就离开网站的次数/进入网站的次数

(20)访问数(Visit)

访问数是指具有唯一访问者标识(唯一地址)的访问者进入或再次进入网站的过程。用户进出数、访问数(Visit)和用户会话是同一术语。网站的精确的访问人次或访问人数难于被统计。用户会话比唯一访问者更能说明网站的全部活动,它表明了网站的使用频率。

运营分析指标
+网站总体概况

按天流量分析
按小时流量分析

+网站访客数据

跳出率分析
访问频率分析
上次访问时间
每次停留时间
平均访问页面数
用户地区分布

+用户环境分析

浏览器分析
操作系统分析
屏幕尺寸分析
屏幕颜色分析

+流量来源分析

站内流量来源
其他流量来源
搜索引擎来源
搜索关键字

+网站热度分析

网站首页分析
网站礼品关注度
最热页面
最热标题
最热入口地址
最热出口地址

通过HIVE分析的指标:

--1.创建数据库

create database jfyun;

use jfyun;

--2. 创建用户访问记录表,先预先创建好分区表

create external table data_collect(

accessDate string,

accesssTime int,

accessHour int,

requestMethod string,

referUrl string,

requestProtocal string,

returnStatus string,

requestUrl string,

referDomain string,

userOrigin string,

originWord string,

browser string,

browserVersion string,

operateSystem string,

requestIp string,

ipNumber int,

userProvince string,

screenSize string,

screenColor string,

pageTitle string,

siteType string,

userFlag string,

visitFlag string,

sFlag string,

timeOnPage int

)partitioned by (access_day string)

row format delimited

fields terminated by '\t'

location '/user/hadoop/external/jfpc/output';

--3. 为表创建分区(先创建分区,然后再使用分区即往分区中加载数据

alter table data_collect add partition(access_day='20150705');

alter table data_collect add partition(access_day='20150706');

--4. 执行mapreduce程序存放数据/加载数据到分区表

hadoop jar jfyun.jar com.yun.job.AccessLogEnhanceImportHDFS external/jfpc/input/20150705/130/clickdata-2015070500.log external/jfpc/output/access_day=20150705

hadoop jar jfyun.jar com.yun.job.AccessLogEnhanceImportHDFS external/jfpc/input/20150705/131/clickdata-2015070500.log external/jfpc/output/access_day=20150705

hadoop jar jfyun.jar com.yun.job.AccessLogEnhanceImportHDFS external/jfpc/input/20150705/130/clickdata-2015070501.log external/jfpc/output/access_day=20150705

hadoop jar jfyun.jar com.yun.job.AccessLogEnhanceImportHDFS external/jfpc/input/20150705/131/clickdata-2015070501.log external/jfpc/output/access_day=20150705

hadoop jar jfyun.jar com.yun.job.AccessLogEnhanceImportHDFS external/jfpc/input/20150706 external/jfpc/output/access_day=20150706

--5. 显示表的分区

show partitions data_collect;

--6. 根据分区条件查看分区数据

select * from data_collect where access_day='20150705';

select * from data_collect where access_day='20150706';

--7. 统计分析网站概况,主要包括: 总体访问量、网站使用率、流量来源、访问内容

--7.1.用户访问趋势

pv 统计-用户点击数PV

(1) 按天统计PV

select accessdate ,count(1) from data_collect where access_day='20150706' group by accessdate;

(2) 按小时统计

select accesshour,count(1) staCount from data_collect where access_day='20150706' group by accesshour;

(3) 每天每个省份PV

select accessdate,userprovince,count(1) from data_collect where access_day='20150706' group by accessdate,userprovince

(4) 每天每个省份 每个小时统计

select accessdate,userprovince,accesshour,count(1) from data_collect where access_day='20150706' group by accessdate,userprovince,accesshour

(5) 统计每天每个页面的访问量

select access_day,requesturl,count(1) from data_collect group by access_day, requesturl ;

UV统计-访客数UV,唯一身份的访问者

(1) 统计总的访问人数,即访客(UV)

select access_day,count(distinct userflag) from data_collect group by access_day;

(2) 统计平均访问页面数(页/人=PV/UV)

select count(1) pvSta,count(distinct userFlag) uvSta

from data_collect

where access_day='20150706'

(3) 统计每个页面访客数

select requesturl,count(distinct userflag) visitCount,min(accesssTime) firstAccessTime ,max(accesssTime) recentAccessTime

from data_collect

where access_day='20150706'

group by requestUrl

order by visitCount desc;

登录数趋势

用户停留时间-平均网站停留时间=网站总停留时间/会话的数量(访次)

(1) 每个访客每天的网站停留时间=最后一次时间-首次访问时间

select userFlag,ceil((max(accesssTime) - min(accesssTime))/1000) visitKeepTime

from data_collect

where access_day='20150706'

group by userFlag;

(2) 根据第一步的数据,统计分析中网站的用户平均停留时间

--7.2 浏览器比例

(1)浏览器比例分析,访问量。统计每个浏览器对应的版本有多少人访问

select userprovince, browser,browserVersion,count(distinct userflag) staCount

from data_collect e

where siteType='0' and access_day='20150706'

group by userprovince, browser,browserVersion

order by userprovince, browser,browserVersion

(2) 操作系统统计,访问量。统计每个操作有多少人使用

select userProvince,operateSystem,count(distinct userflag)

from data_collect

where siteType='0' and access_day='20150706'

group by userProvince,operateSystem

order by userProvince,operateSystem

(3)屏幕颜色统计,访问量。有多少人使用

select userProvince,screenColor,count(distinct userflag)

from data_collect

where siteType='0' and access_day='20150706'

group by userProvince,operateSystem

order by userProvince,operateSystem

(4)屏幕尺寸,访问量。有多少人使用

select userProvince,screenSize,count(distinct userflag)

from data_collect

where siteType='0' and access_day='20150706'

group by userProvince,operateSystem

order by userProvince,operateSystem

--7.3 来源关键字统计。统计每个关键字使用的次数

select originWord,count(1) staCount

from data_collect

where siteType='0' and access_day='20150706' and originWord!='-'

group by originWord

order by staCount desc

--7.4 来源分析。

--7.5 热门标题统计[TOP20]

select pageTitle,count(1) staCount

from data_collect

where siteType='0' and access_day='20150706'

group by pageTitle

order by staCount desc

--7.6热门入口地址

select userOrigin,count(1) staCount

from data_collect

where siteType='0' and access_day='20150706'

group by userOrigin

order by staCount desc

--7.7用户地区访问量分布

(1)主要统计每个省份的访问量

select userprovince,count(1)

from data_collect

where siteType='0' and access_day='20150706'

group by userProvince

(2)统计每个省份访客数

select userprovince,count(distinct userFlag)

from data_collect

where siteType='0' and access_day='20150706'

group by userProvince
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: