网站流量日志分析--数据预处理 --点击流模型 visit 代码实现| 学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习网站流量日志分析--数据预处理--点击流模型 visit 代码实现

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第二阶段)网站流量日志分析--数据预处理--点击流模型 visit 代码实现】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/694/detail/12196


网站流量日志分析--数据预处理--点击流模型 visit 代码实现

内容介绍:

一、代码实现

二、运行效果

三、总结梳理

 

一、代码实现

明确了编程实现思路之后,接下来确定代码层面如何具体实现,打开编译器的 visit模型。

 image.png

1.整体流程

首先写一个类叫做 ClickStreamvisit,这里面就是处理数据的矮码核心逻辑,第一步确定map阶段,根据画谱知道在map阶段,没有进行任何核心的操作,也就是读取一行记录把里面的 session 提出来之后,key把这一行记录分装成 pageview 作为 V传递出去即可。代码非常简单,读取一行后将其转为字符串,然后按照\001进行切割,所以数据当中也是\001不可见分隔符,切完之后,需要进行解释,把里面具体的每一个字段保存在 pvBean 中,key叫做 pvBean getSession,也就是把会话当中的key,v就是 pageviewsBean,整体逻辑和画图板没有任何区别。

map阶段没有去做任何具体的操作,经过map之后来到reduce阶段,reduce所接触到的大量的keyV,它们的key都是 sessionV就是 pageviewsBean。

2.具体逻辑的实现

首先还是在同一组当中,把这一组所有的对象 pageviewsBean 创建在集合当中,先定义一个Array集合,里面保存的是 pageviewsBean,它的数据来自于这一组迭代器当中,所有对象把它迭代出来,通过对象的复制将它添加到集合当中,添加完成之后,针对这个集合进行排序,通过画谱知道排序现在有两种选择,既可以按照时间正序排序,也可以按照步骤号排序,因为步骤号的顺序就是访问时间的证据,这里直接以步骤号来进行排序。把集合放在 collection.sort 当中的时候,用了comparable 重写它的方法,然后get两个步骤当中的步骤号。规则是o1step是否大于o2d step,因为步骤号是一个基本数据类型,所以可以直接来判断,如果大于,做一个三元运算返回1,否则的话返回-1comparable 方法是根据正数负数零来判断的,如果大于返回的是正数,小于返回负数,相等为0,这样就完成了根据步骤号进行排序,当然也可以继续按照获取时间进行排序,方法是大同小异的。

排序完成之后就比较简单了,去创建一个 visitBean,就是最终需要输送类型,在这个问题当中,确定了以下需要输出的数据类型,包括会话 session、属于哪个用户的IP、然后进入时间 intime、离开时间 outtime、进入页面 inpage、离开页面outpage,来自哪里 referal 以及最后一个 pageVisits,在一个会话话当中总共的访问界面,也就是画谱中所说的 total pages,单词的属性名字不一样,但描述的意思是一样的,即一个会话总共访问了几个页面。

确定了这些数据之后,注意不要忘了它的rival序列化机制,在刚才的几个当中get0,提前第一个页面作为进入页面,第一条时间作为进入时间,最后一条时间、最后一个的页面作为离开的时间和离开的页面,总共访问了几个页面,就是集合的size

同一个会话的记录一定来到同一组中,同一组一定保存在同一个集合当中,size 为一,一个会话就有一条,size2就是两条记录,这样把数据直接写出即可,最后发现计算非常方便.下面是main方法,全都是模板代码,主要是指定mapreduce以及输入输出路径,这时要注意根据画谱知道V的模型数据来自于pageviews模型数据,所以此时的输入路径应该是上一个代码程序的输出路径。

 

二、运行效果

打开本地模式,上一个输出路径为 pageviews,把这个路径作为输入复制到这里,设置为它的 input pass,输入进后可以单独写一个,右键运行来执行,这时候是用本地模式来运行的,计算的速度将会非常的快,因为数据量比较小,当然数据量大的时候,一定要把程序打架包放在样机上,采用分布式来进行计算。

处理完之后打开本地的输出路径来看一下V的目录结果,当中 success 标识计算是成功的,右键打开一下这个数据,这时会发现当中就没有重复的session了,因为根据 session 进行聚合,不管同一个会话有几条记录都聚集为一条记录,当中属于会话的功能it进入时间、离开时间、进入页面、离开页面,可以看到有的在一其中访问了三步,有的访问了一步,有的可能访问两步,这样对于后面计算一些指标将会显得非常的方便,这就是点击流visit的模型。

 image.png

 

三、总结梳理

回到画谱中梳理 visit 的模型,visit 模型专注于每次会话内起始结束的访问情况,为此就要需要找到同一个会话的所有记录,只拿第一条和只拿最后一条,第一条的相关信息,就是它的起始信息,最后一条的信息,就是它的结束信息,这两个模型就构成了所谓的点击的模型,再次强调一点,不管是 pageviews 模型,还是visit的模型,它都不是客观存在的模型,完全是一套业务理论模型,是由一些业务指标堆积而成的,它的存在就是为了计算某些指标的方便。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
监控 测试技术 开发者
一行代码改进:Logtail的多行日志采集性能提升7倍的奥秘
一个有趣的现象引起了作者的注意:当启用行首正则表达式处理多行日志时,采集性能出现下降。究竟是什么因素导致了这种现象?本文将探索Logtail多行日志采集性能提升的秘密。
125 23
|
1月前
|
运维 监控 Cloud Native
一行代码都不改,Golang 应用链路指标日志全知道
本文将通过阿里云开源的 Golang Agent,帮助用户实现“一行代码都不改”就能获取到应用产生的各种观测数据,同时提升运维团队和研发团队的幸福感。
148 10
|
3月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
541 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
5月前
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
3月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
312 0
|
3月前
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
08-06-06>pe_xscan 精简log分析代码 速度提升一倍
08-06-06>pe_xscan 精简log分析代码 速度提升一倍
|
4月前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
191 0
|
2月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
513 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
27天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。