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

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

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

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
5月前
|
数据挖掘
88 网站点击流数据分析案例(统计分析-键路径转化率分析)
88 网站点击流数据分析案例(统计分析-键路径转化率分析)
37 0
|
3月前
|
前端开发
【简历优化平台-02】缺失信息和不规范信息的过滤层
【简历优化平台-02】缺失信息和不规范信息的过滤层
|
4月前
|
SQL 数据可视化 数据库
聊天记录年度报告一览无余:轻松多格式导出永久保存,深度智能分析
聊天记录年度报告一览无余:轻松多格式导出永久保存,深度智能分析
聊天记录年度报告一览无余:轻松多格式导出永久保存,深度智能分析
|
8月前
|
SQL Java 关系型数据库
从系统报表页面导出20w条数据到本地只用了4秒,我是如何做到的
最近有个学弟找到我,跟我描述了以下场景: 他们公司内部管理系统上有很多报表,报表数据都有分页显示,浏览的时候速度还可以。但是每个报表在导出时间窗口稍微大一点的数据时,就异常缓慢,有时候多人一起导出时还会出现堆溢出。 他知道是因为数据全部加载到jvm内存导致的堆溢出。所以只能对时间窗口做了限制。以避免因导出过数据过大而引起的堆溢出。最终拍脑袋定下个限制为:导出的数据时间窗口不能超过1个月。
|
11月前
|
Web App开发 人工智能 算法
为什么GNE 不做全自动提取列表页的功能
为什么GNE 不做全自动提取列表页的功能
78 0
|
数据采集 分布式计算 监控
网站流量日志分析—数据入库—含义和 ETL 本质解释|学习笔记
快速学习网站流量日志分析—数据入库—含义和 ETL 本质解释
365 0
网站流量日志分析—数据入库—含义和 ETL 本质解释|学习笔记
|
JSON 关系型数据库 大数据
电商项目之用户行为日志字段分析|学习笔记
快速学习电商项目之用户行为日志字段分析
247 0
|
存储 Java Scala
网站用户行为分析项目之会话切割(一)(中)
网站用户行为分析项目之会话切割(一)(中)
178 0
网站用户行为分析项目之会话切割(一)(中)
|
存储 分布式计算 Java
网站用户行为分析项目之会话切割(一)(下)
网站用户行为分析项目之会话切割(一)(下)
142 0
网站用户行为分析项目之会话切割(一)(下)
|
数据挖掘 数据处理 数据库
案例分享:Qt数据分析处理平台(兼容各国产麒麟系统)(文件域字符串解析,上万文件批量导入,折线图、散点图,正态分布图分析处理导出等)
案例分享:Qt数据分析处理平台(兼容各国产麒麟系统)(文件域字符串解析,上万文件批量导入,折线图、散点图,正态分布图分析处理导出等)
案例分享:Qt数据分析处理平台(兼容各国产麒麟系统)(文件域字符串解析,上万文件批量导入,折线图、散点图,正态分布图分析处理导出等)

热门文章

最新文章