网站用户行为分析项目之会话切割(一)(上)

本文涉及的产品
.cn 域名,1个 12个月
简介: 网站用户行为分析项目之会话切割(一)(上)

0x00 教程内容


  1. 项目分析
  2. 编程实现

基础知识及环境准备:

1、Maven的构建,学会Scala编程

2、IDEA已经安装好了Scala插件


0x01 项目分析


1. 项目背景

我们在浏览网站的时候,我们的很多信息都会被网站的后台采集到,采集的方式有很多种,至于怎么采集,以后有机会再写教程详细说,这篇教程主要是讲解采集到了数据后,对数据进行一个切割的过程。关于信息的收集,可参考文章,自行了解一下:网站分析数据(即用户行为数据)的三种收集方式详解 如果有时间,再整理相应的实操教程出来。


会话切割:用户行为分析的前置工作,相当于一个前置处理过程而已。


2. 学习收获

学完此教程,可以学到平时工作上怎么实现会话切割的一整套流程?理解切割前后的数据是怎样的?更加熟悉Scala API的使用以及其他开发上的技巧等等。


3. 数据源介绍

目前我们已经采集到了三份数据:网站用户点击日志、用户Cookie的标签、网站域名的标签


一、网站用户点击日志(存储在HDFS),格式如下:


微信图片_20220618210408.png


#type|server time|cookie|ip|url
pageview|2017-09-04 12:00:00|cookie1|127.0.0.3|https://www.baidu.com
click|2017-09-04 12:00:02|cookie1|127.0.0.3|https://www.baidu.com
pageview|2017-09-04 12:00:01|cookie2|127.0.0.4|https://www.baidu.com
click|2017-09-04 12:00:04|cookie1|127.0.0.3|https://www.baidu.com
pageview|2017-09-04 12:00:02|cookie2|127.0.0.4|http://news.baidu.com
click|2017-09-04 12:00:03|cookie2|127.0.0.4|http://news.baidu.com
pageview|2017-09-04 12:00:04|cookie2|127.0.0.4|http://music.baidu.com/?fr=tieba
pageview|2017-09-04 12:45:01|cookie1|127.0.0.3|https://tieba.baidu.com/index.html
click|2017-09-04 12:45:02|cookie1|127.0.0.3|https://tieba.baidu.com/index.html
click|2017-09-04 12:45:03|cookie1|127.0.0.3|https://tieba.baidu.com/index.html
hhhh|2017-09-04 12:45:03|cookie1|127.0.0.3|https://tieba.baidu.com/index.html
3333ss|2017-09-04 12:45:03|cookie1|127.0.0.3|https://tieba.baidu.com/index.html


解释

此可以通过网站的后台采集到,我们去访问了一次网页时,这是一个行为,我们叫这个行为称为pageview行为;我们点击(click)了网页的某个按钮,也会有一个点击行为;还有在网页中滚动、选定文字等等也是相应的行为……每个行为都会产生相应的信息,至于是什么信息,可以看一下上面的数据里面有什么内容,这些信息都可以被采集到后台。这里为了方便起见,只拿pageview与click这两个行为作为例子,这些行为与Session机制是分不开的。这里的数据的第一行是对应的列含义,除了第一行,其他行的列是以“|”分开。因为这些行为信息会很多,所以我们将其存储到HDFS上。


Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session对象中。有关使用Session 对象的详细信息,请参阅“ASP应用程序”部分的“管理会话”。注意会话状态仅在支持cookie的浏览器中保留。

——来自百度百科


通俗易懂描述:

至于会话,学过浏览器相关知识的人应该都比较清楚什么是会话,会话即session,我们在浏览网站的时候,会对网站发起一次会话,就好像我们用XShell建立一个会话窗口访问我们的服务器一样,那也是一个会话,而且你会发现,如果窗口很久不动它,它会自动断开连接。在我们浏览网站的时候也一样,我们的会话有效时长默认是30min,30min不动,默认断开会话。

这里我们所做的会话切割业务,就是根据我们网站后台记录的时间,每隔30分钟切割成一个会话。

我们现在已经有一个比较粗略概念,即会话有点类似与一种请求,而这个请求,Web服务器可以自动给你创建一个Session对象,里面可以存各种属性,包括pageview、click等等。


二、用户Cookie的标签(存储在HDFS),格式如下:


image.png


cookie1|固执
cookie2|有偏见
cookie3|执着
cookie4|执行力很强


解释

每个cookie都打上了对应的类型,作为标签。此过程可以由数据团队,根据机器学习的算法来实现,这里不纠结先,后期有时间会给出教程。因为这些行为信息也会很多,所以我们也将其存储到HDFS上。


Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。

——来自百度百科


三、网站域名的标签(存储在配置库,如数据库)


"www.baidu.com" -> "level1",
"www.taobao.com" -> "level2", 
"jd.com" -> "level3", 
"youku.com" -> "level4"


解释

我们自定义的给网站分的级别,已经打上了相应的级别标签,当然,也可能有些域名没有分级。这些域名远远没有行为信息那么多,我们可以考虑存储在传统数据库里面。

4. 项目总体流程


微信图片_20220618210513.png


其实上面就是一个ETL的过程,最终我们会得到两张表,分别是TrackerLog表与TrackerSession表,也都是存储在HDFS上的,我们这里用的存储方式是Parquet格式。TrackerLog对应我们的原始日志的表,TrackerSession为我们切割后的Session信息表。

我们可以大致用肉眼看一下上面的十行数据,每30min切成成一个会话,我们可以看出来,是有三个会话的,如果我们最后切割出来有三个会话,则表示我们实操结果是对的。

但在此过程中,我们主要是实现的是上图中间的会话切割、生成会话这里边的业务。


5. 最终数据结构

a. 确定表字段


TrackerLog表的字段(暂时可以先忽略里面的数据):


微信图片_20220618210528.png


TrackerSession表字段(暂时可以先忽略里面的数据):


image.png

相关文章
|
数据挖掘
88 网站点击流数据分析案例(统计分析-键路径转化率分析)
88 网站点击流数据分析案例(统计分析-键路径转化率分析)
78 0
|
1月前
|
数据采集
以“股票代码实时抓取股票信息”为例的爬虫案例
爬虫—根据股票代码实时抓取股票信息
图库,设计类软件,App视频截图软件,外加设计图库,在你截取视频就能够实现图片收录,通过设计类网站后台控制系统,可以提前设置好,统计的分类内容,定义好分类,自动收录图片,再将截图汇总整理展示
图库,设计类软件,App视频截图软件,外加设计图库,在你截取视频就能够实现图片收录,通过设计类网站后台控制系统,可以提前设置好,统计的分类内容,定义好分类,自动收录图片,再将截图汇总整理展示
图库,设计类软件,App视频截图软件,外加设计图库,在你截取视频就能够实现图片收录,通过设计类网站后台控制系统,可以提前设置好,统计的分类内容,定义好分类,自动收录图片,再将截图汇总整理展示
|
3月前
|
JavaScript 前端开发 定位技术
云解析地图作业问题之在搭建页面中简化数据筛选的过程如何解决
云解析地图作业问题之在搭建页面中简化数据筛选的过程如何解决
31 0
|
5月前
|
缓存 应用服务中间件 API
FM全网自动采集聚合影视搜索源码
FM 全网聚合影视搜索(响应式布局),基于 TP5.1 开发的聚合影视搜索程序,本程序无数据库,本程序内置P2P 版播放器,承诺无广告无捆绑。片源内部滚动广告与本站无关,谨防上当受骗,资源搜索全部来自于网络。
85 1
|
搜索推荐 数据挖掘 BI
78 网站点击流数据分析案例(网站流量分析过程)
78 网站点击流数据分析案例(网站流量分析过程)
189 0
|
SQL Java 关系型数据库
从系统报表页面导出20w条数据到本地只用了4秒,我是如何做到的
最近有个学弟找到我,跟我描述了以下场景: 他们公司内部管理系统上有很多报表,报表数据都有分页显示,浏览的时候速度还可以。但是每个报表在导出时间窗口稍微大一点的数据时,就异常缓慢,有时候多人一起导出时还会出现堆溢出。 他知道是因为数据全部加载到jvm内存导致的堆溢出。所以只能对时间窗口做了限制。以避免因导出过数据过大而引起的堆溢出。最终拍脑袋定下个限制为:导出的数据时间窗口不能超过1个月。
|
监控 开发者
网站流量日志分析背景介绍— 如何进行网站分析--内容导航分析|学习笔记
快速学习网站流量日志分析背景介绍—如何进行网站分析--内容导航分析
117 0
网站流量日志分析背景介绍— 如何进行网站分析--内容导航分析|学习笔记
|
SQL 监控 HIVE
网站流量日志分析--统计分析--回头单次访客分析|学习笔记
快速学习网站流量日志分析--统计分析--回头单次访客分析
127 0
网站流量日志分析--统计分析--回头单次访客分析|学习笔记
|
数据采集 分布式计算 监控
网站流量日志分析—数据入库—含义和 ETL 本质解释|学习笔记
快速学习网站流量日志分析—数据入库—含义和 ETL 本质解释
426 0
网站流量日志分析—数据入库—含义和 ETL 本质解释|学习笔记