点击流分析

点击流概念

点击流(Click Stream)是指用户在网站上持续访问的轨迹。注重用户浏览网站的整个流程。用户对网站的每次访问包含了一系列的点击动作行为,这些点击行为数据就构成了点击流数据(Click Stream Data),它代表了用户浏览网站的整个流程。

点击流和网站日志是两个不同的概念,点击流是从用户的角度出发,注重用户浏览网站的整个流程;而网站日志是面向整个站点,它包含了用户行为数据、服务器响应数据等众多日志信息,我们通过对网站日志的分析可以获得用户的点击流数据。

点击流模型完全是业务模型,相关概念由业务指定而来。由于大量的指标统计从点击流模型中更容易得出,所以在预处理阶段,可以使用spark程序来生成点击流模型的数据。

在点击流模型中,存在着两种模型数据:PageViewsVisits

点击流模型pageviews

Pageviews模型数据专注于用户每次会话(session)的识别,以及每次session内访问了几步和每一步的停留时间。

在日志数据分析中,通常把前后两条访问记录时间差在30分钟以内算成一次会话。如果超过30分钟,则把下次访问算成新的会话开始。

大致步骤如下:

在所有访问日志中找出该用户的所有访问记录

把该用户所有访问记录按照时间正序排序

计算前后两条记录时间差是否为30分钟

如果小于30分钟,则是同一会话session的延续

如果大于30分钟,则是下一会话session的开始

用前后两条记录时间差算出上一步停留时间

最后一步和只有一步的 业务默认指定页面停留时间60s

 

点击流模型visit

Visit模型专注于每次会话session内起始、结束的访问情况信息。比如用户在某一个会话session内,进入会话的起始页面和起始时间,会话结束是从哪个页面离开的,离开时间,本次session总共访问了几个页面等信息。

大致步骤如下:

在pageviews模型上进行梳理

在每一次回收session内所有访问记录按照时间正序排序

第一天的时间页面就是起始时间页面

业务指定最后一条记录的时间页面作为离开时间和离开页面

用户行为日志

1 日志数据格式

日志数据内容样例

f5dd685d-6b83-4e7d-8c37-df8797812075 222.68.172.190 - - 2018-11-01 14:34:57 "GET /images/my.jpg HTTP/1.1" 200 19939 "http://www.angularjs.cn/A00n" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36" 

字段解析:

1 、用户id信息-uid: f5dd685d-6b83-4e7d-8c37-df8797812075

2、访客ip地址: 222.68.172.190

3、访客用户信息: - -

4、请求时间:2018-11-01 14:34:57

5、请求方式:GET

6、请求的url:/images/my.jpg

7、请求所用协议:HTTP/1.1

8、响应码:200

9、返回的数据流量:19939

10、访客的来源url:http://www.angularjs.cn/A00n

11、访客所用浏览器:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36

注意:分隔符为空格

 

 数据入库

1. 创建ODS层数据表

1.1. 原始日志数据表

drop table if exists itcast_ods.ods_weblog_origin;
create table itcast_ods.ods_weblog_origin(
  valid Boolean,  
  remote_addr string,  
  remote_user string,
  time_local string,
  request string,
  status string,
  body_bytes_sent string,
  http_referer string,
  http_user_agent string,
  guid string)
  partitioned by (dt string)
  STORED AS PARQUET;

 

  valid Boolean,       --判断数据是否合法

  remote_addr string,   --记录客户端的ip地址

  remote_user string, --记录客户端用户名称,忽略属性"-"

  time_local string, --记录访问时间与时区

  request string, --记录请求的url与http协议

  status string, --记录请求状态;成功是200

  body_bytes_sent string, --记录发送给客户端文件主体内容大小

  http_referer string, --用来记录从那个页面链接访问过来的

  http_user_agent string, --记录客户浏览器的相关

  guid string) --用户id信息

注意事项:

parquet中字段数据类型要与hive表字段类型保持一致!!

1.2.点击流模型

drop table if exists itcast_ods.ods_click_pageviews;
create table itcast_ods.ods_click_pageviews(
session string,
remote_addr string,
time_local string,
request string,
visit_step int,
page_staylong string,
http_referer string,
http_user_agent string,
body_bytes_sent string,
status string)
partitioned by (dt string)
STORED AS PARQUET;

session string,         //session

remote_addr string,     //ip地址

time_local string,      //访问时间

request string,         //请求路径

visit_step int,         //访问第几个页面

page_staylong string,   //停留时长

http_referer string,    //用来记录从那个页面链接访问过来的

http_user_agent string, //记录客户浏览器的相关

body_bytes_sent string, //记录发送给客户端文件主体内容大小

status string           //状态//用户ID

 

1.3. 点击流visit模型表

drop table if exist itcast_ods.ods_click_stream_visit;
create table itcast_ods.ods_click_stream_visit(
session   string,
remote_addr string,
inTime   string,
outTime   string,
inPage   string,
outPage   string,
referal   string,
pageVisits  int)
partitioned by (dt string)
STORED AS PARQUET;

 

session   string,    //session

remote_addr string,  //IP地址

inTime   string,     //进入时间

outTime   string,    //离开时间

inPage   string,     //进入的页面

outPage   string,    //离开的页面

referal   string,    //用来记录从那个页面链接访问过来的

pageVisits  int)     //访问页面数量

猜你喜欢

转载自blog.csdn.net/weixin_44036154/article/details/106222752