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

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

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

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


网站流量日志分析--数据预处理--点击流模型 visit 编程实现思路

内容介绍:

一、概述

二、思路及说明

三、逻辑梳理

四、总结


一、概述

下面来看点击流模型visit模型的具体实现,结合刚才所画的思路图来看一下如何通过代码具体实现,为了更地理解首先画图进行梳理,确定实现思路。

 

二、思路及说明

1.思路图

打开画图板,要想生成visit模型,它的处理数据就是刚才所生成的pageviews模型。它的待处理目录叫做点击流的pageviews模型数据,图示如下:

image.png

2.说明

首先是 pageviews 模型,有了模型数据后,还是经过矮码的两个阶段,首先是maptask 阶段,然后是 reducetask 阶段,maptask 阶段还是要确定输入的keyV分别是什么,输入到map阶段之后,默认的keyV不需要考虑,每行的起始偏移量这一行内容,重点在于 maptask 的输出,maptask 的输出是 reducetask 的输入,reducetask 又涉及到很多的聚合分组操作,要想确定以什么作为key,需要明确根据什么进行聚合。

打开之前所画的图,在得到visit的模式的时候需要找到属于同一个会话的所有记录,然后再去找它的第一条和最后一条,所以要根据数据会话 session 聚合,不是属于同一个会话的,不能聚集到一起。现在明确的是:输出的时候把 session ID作为keyV处理数据就是刚才 pageviews 的模型数据,一行的记录都可以传递给它,需要什么就去截取什么。

输出的 key sessionVpageviewsBean,有了这样的 key V之后,来到reduce会涉及到大量的项目,比如来到 reduce 里会有<session1pageviewsBean><session2pageviewsBean>等等,按照之前的逻辑矮马编程还要进行根据key的字节信息排序,排完之后相同的可以达到同一分组,组成一个新的kv对。进行排序分组的时候是把session作为key的,相同的会话会被分到同一组中,在同一组中会组成一个新的kv对,这个新的kv对中的k是这一组共同的k,比如是 session1,而它的v变成l Iteable的迭代器,里面是pageviewsBean,这里面的可以多写几个 pageviewsBeanpageviewsBean 有几个取决于数据,即同一个会话有几部,步骤多pageviewsBean自然就多,步骤少,可能只有一个。

 

三、逻辑梳理

回到画图板中,同一化之后进行排序,所关注的是起始和结束情况,即只需要关注第一步和最后一步。现在又涉及到一个问题,同一个会话的所有记录在一个迭代机当中,按照逻辑把属于同一个会话的所有记录按照时间进行排序,按照时间进行排序时有一个小技巧,即按照时间排序的同时也可以按照步骤号进行排序,一个pageviews 当中所打的步骤号就是时间的顺序号,比如时间为8:30:258:30:358:31:05的顺序分别是123,所以有两个排序规则,既可以按照时间排序,也可以按照步骤号排序。排序完成之后只拿第一条和最后一条,也就是第一步和最后一步。

排序方法和之前所讲一样,把属于同一个 session 的记录保存在一个集合当中,比如一个简单的伪代码,创建一个集合叫做List L1到另一个 ArrayList 中,其中保持的对象就是 page viewsBean,把所有对象放在当中,调用 collection.sort 方法进行排序,把集合放在当中,然后重写排序规则。排序完成之后,第二步就变得更加简单了,在同一个会话所属的集合中,只提取第一条记录和最后一条记录,因为visit模型所关注的就是起始和结束情况,而第一条记录就是起始记录,最后一条记录就是离开的记录,这就构成了所谓的visit模型,它的整个流程实现起来非常简单。

但需要注意的是,此时还没有完全实现完毕,还涉及到visit模型的数据输出,这里面会涉及到多个属性,例如 inpage 进入页面、intime 进入时间,还要 outtimeoutpage,以及总共访问的页面 totalpage 等,这个时候还是利用Java的传递数据追踪,创建一个对象叫做visitBeanvisitBean里面涵盖了所需要保存的数据,放在当中作为对象传递出去,输出的 key V也就可以确定了,输出的key叫做visitBean,当然要去重写它的投资方法等,V如果不知道还是用null空来表示,这样就完成了点击流当中visit模型的梳理。

 

四、总结

可以发现当中还是把业务结合 reduce 矮码的编程模型来实现,整个处理的核心逻辑还是在 reducetask 阶段完成,其中涉及到了Java当中如何排序,如何进行遍历等的相关操作。

以上就是 visit 模型怎么用代码来实现,思路非常重要,决定了后续的代码能不能写出来。

相关实践学习
日志服务之数据清洗与入湖
本教程介绍如何使用日志服务接入NGINX模拟数据,通过数据加工对数据进行清洗并归档至OSS中进行存储。
相关文章
|
25天前
|
存储 Java 关系型数据库
基于JSP的九宫格日志网站
基于JSP的九宫格日志网站
|
26天前
|
JSON 中间件 数据格式
Gin框架学习笔记(六)——gin中的日志使用
Gin框架学习笔记(六)——gin中的日志使用
|
2月前
|
安全 Linux 调度
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
21 1
|
2月前
|
C++ 索引
【Qt 学习笔记】如何在Qt中打印日志 | qDebug的使用 | Assistant的使用
【Qt 学习笔记】如何在Qt中打印日志 | qDebug的使用 | Assistant的使用
123 0
|
2月前
|
小程序 Linux 数据安全/隐私保护
Linux学习笔记十六:日志管理
Linux学习笔记十六:日志管理
|
18天前
|
存储 关系型数据库 MySQL
|
3天前
|
监控
查看服务器/IIS日志、log、访问信息基本方法
除了手动查看,你也可以使用日志分析工具,如Log Parser、AWStats等,这些工具可以帮助你更方便地分析日志数据。
4 1
|
11天前
|
Java 测试技术 Apache
《手把手教你》系列基础篇(八十六)-java+ selenium自动化测试-框架设计基础-Log4j实现日志输出(详解教程)
【7月更文挑战第4天】Apache Log4j 是一个广泛使用的 Java 日志框架,它允许开发者控制日志信息的输出目的地、格式和级别。Log4j 包含三个主要组件:Loggers(记录器)负责生成日志信息,Appenders(输出源)确定日志输出的位置(如控制台、文件、数据库等),而 Layouts(布局)则控制日志信息的格式。通过配置 Log4j,可以灵活地定制日志记录行为。
27 4
|
12天前
|
运维 Java Apache
Java中的日志框架:Log4j与SLF4J详解
Java中的日志框架:Log4j与SLF4J详解
|
18天前
|
SQL 运维 关系型数据库