网站流量日志分析—数据入库—ODS 数据导入操作|学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习网站流量日志分析—数据入库—ODS 数据导入操作

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第三阶段) 网站流量日志分析—数据入库—ODS 数据导入操作】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/695/detail/12202


网站流量日志分析—数据入库—ODS 数据导入操作


内容介绍:

一、 原始日志表

二、 点击流模型之 pageviews

三、 点击流迷行之 visit

四、 时间维度表

五、 总结


一、原始日志表

因为在项目当中,在预处理阶段采用的是本地模式,所以对应的净化数据都在本地 windows 平台上,所以说要做一个上传的操作才可以填充进去。

有一个脚本叫做 ods-data-import,这里描述如何进行数据的填充,如下图,

image.png

首先 hdfs 命令,在分布系统创建文件夹,预处理的,点击流模型的,还有时间维度的,把本地清理来的数据给它填充上传到路径下,再使用 hive load 命令进行加载,load 命令加载可以从本地加载核心区在 local 选项,因此没有必要这么麻烦,可以更加方便快捷的把数据填充进去。

打开服务器,首先在 hive 服务器创建文件夹统一管理数据,叫做hivedata ,把所有净化数据上传到这个路径下,便于集中管理。那么首先回到 hive 看一下,在当前的 ods 当中有四张表,原始日志数据的原始表,点击流模型 visit 表和时间维度表。

接下来首先填充导入一下 origin 原始日志表,它所对应的数据就在本地的 output 下,就是预处理完转换之后的数据,首先把数据上传到本地的路径上,上传好之后接下来使用 hive load 命令进行加载,加载的时候需要注意两点,第一数据是位于服务器上,所以需要加上 node 关键字,第二这个表示一个分区表,所以说要去指定分区的字段。当中几个表导入命令大同小异,写一个其他修改即可,首先导入原始日志表,导入命令就是 hive 命令,使用的是 load data 命令,load data 导入数据,数据在本地,加一个 local 关键字,路径为 inpath,

数据在哪个路径上?首先叫做 pwd,查看路径,这是第一级路径 /root/hivedata 把它填充过来,接下来在这个路径上有个文件叫做 l 查看一下叫做 part-m-0000,复制一下填充过来,比如等一下需要把这个路径下 root/hivedata的文件 load data local into table ,这个表当然就是所指的是原始日志表,把 ods-weblog-origin 复制一下,导入表之后,正常直接导入没有问题,一再强调,这个表还是分区表,可以使用表的命令查看表的结构,用 desc formatted 叫做 ods 结构表,这个表结构当中上面这些都是表自带的字段,是创建表的字段,校验,IP 等等,下面这个表还有个分区的信息,分区的字段叫做 datestr 是一个字符串,还可以指定它的分区,这里分区是以日期分区,去收集到的数据都是非常标准的,2018年11月1号数据。在企业当中按照正常的逻辑推理,明天应该分析的是11月2号的,11月3号等等,按天来进行分区效果会比较好,后面需要指定分区哪一天需要通过 VR 指定查找分区。

还需要写上 partition 分区,分区字段就是 datestr,日期,分区值不能瞎写跟数据保持一致,这一个数据将会被导入到11月1号中,明天是11月2号,以此类推,这样就完成了分区的结构。接下来把这个命令load data local inpath ‘/root/hivedata/part-m-0000’into table ods-weblog-origin partition(datestr=”20181101”);确认无误之后做一个执行,Ctrl+C ,来到服务器当中,在 hive 当中进行数据的加载,加载完之后显示这个失败,服务器命令加速表达中,加载之后,通常验证这个表到底有没有导入映射成功,用select 看一下各个字段是否映射出来, form 这个表叫做 ods-weblog-origin,但是这个时候要注意有很多要加一个 limit 返回10条即可加一个*,这样就查询表中的字段,这个表中(如下图)的字段比较多,在 CRT 当中终端做一个自动换行,

image.png

通常在企业中可以把查询的信息复制粘贴,打开一个 node 新的标签页, Ctrl+V 做一粘贴,这里面(如下图)进行是否自动换行,如果

image.png

把自动换行勾出来,这跟里面看到的一样,所以不需要打开自动换行,把自动换行去掉,这样看起来比较标准,验证一下,比如说第一个字段校验符验证成功,用户的IP、时间、信息、resquet 请求页面,状态码,发送的数据量、referer 从哪里来的,后面一个终端信息,最后一个是所谓的日期分区的日期,这样就变得比较完整,这就完成第一个表的数据导入。


二、 点击流模型之 pageviews

首先把数据确定一下,打开本地,选择 part-r-00000当中,接下来把数据托载到路径下,选择运行,

image.png

接下来是导入操作,导入操作命令基本上跟刚才一样,只要做表相关的修改即可,复制粘贴,注意名字叫做 part-r 而不是 pary-0,这些细节一定要注意,接下来是 into table 是点击流模型表,叫做 pageviews ,再次强调这些没有什么技巧难度,需要心细,细心即可没有捷径可做,后面顺序保持一致,也是20181101,没有问题之后做一个复制,在 hive 当中做一个执行,

image.png

这样就完成了这个表的顺序接通,还有验证表的数据是否正确。复制输入select * from 这个表注意不要忘记加 limit 返回条件限制。依然还是把这个映射数据复制粘贴出来,在 node 做一个查看,这就是字段比较多自动换行的原因导致的。

打开一个新的标签页粘贴一下,来验证一下,当中有 IP 、时间、请求的页面、步骤、页面停留时间、referer 从哪来的以及 agent 终端信息,发送输出量、状态码,分区信息非常成功,这样就映射成功了。

 

三、 点击流模型之 visit

这个表依然之前一样,它的数据在本地 visit 当中,它的名字因为也叫做 part-r-00000,为了不重复,把之前的 pary-r-00000 删除,删除之后把 visit 拖过来上传,再做一个填充,它的命令跟之前差不多一样,就表名改一下,复制过来,加载本地数据,名字一样 into table 这不叫 pageviews,叫做 views 。如果不行,写一个 tables ,确定一下表

这是在企业当中常见的操作,后面依然保持一致,复制又导入了一个网络数据,按照正常逻辑,首次导入强烈建议检查一下映射是否成功,如果不成功后面不好做,接下来还是 select * from 这个表,注意所有字段一定要去查看,加一个 limit 返回限制,

image.png

查完之后这个结果复制粘贴出来,做一个查看确认看一下字段映射是否成功,打开一个新的 node 页面,当中有时间、进入页面离开时间,进入页面离开页面,从哪来的、访问多少页面,这就是点击流模型的 visit 。


四、 维度表

Show tables 查看,把原始日志表搞定,点击流模型搞定以及时间维度表,时间维度表跟业务相关,业务数据都是跟2018年11月1号的,时间维度至少能够涵盖2018年11月1号,如果是2017 年没有意义,2019年的也没有意义,打开 dim-time-dat 的文件,这个文件就是提供的时间维度数据,这当中的数据没有过多的难度,在企业当中使用脚本来生成,看日期2018年10月31号一直到 11月2号,当中正好涵盖了11月1号的24小时,后面要去分析每个小时有多少人,做一个关联进行分组统计,接下来把数据上传填充。

image.png

因为它不是所谓的分区表,所以就比较简单。把分区信息去掉,首先第一点要明确它的表的字段,表文件结构叫做 dim-time-dat ,把它导入到时间维度表当中,复制粘贴,填充完之后把命令加载到 hive 当中,接下来是 select *form 验证,输入select *form t_dim_time回车,映射非常成功。

image.png


五、总结

至此就完成了 ODS 数据导入操作,这个导入操作没有什么技术难点操作重点注意,要心细注意确定数据在哪里表在哪里,局限一下表是否映射成功,这就是数据导入操作。

 

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
143 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
2月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
505 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
1月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的联机重做日志文件与数据写入过程
在Oracle数据库中,联机重做日志文件记录了数据库的变化,用于实例恢复。每个数据库有多组联机重做日志,每组建议至少有两个成员。通过SQL语句可查看日志文件信息。视频讲解和示意图进一步解释了这一过程。
|
2月前
|
数据采集 机器学习/深度学习 存储
使用 Python 清洗日志数据
使用 Python 清洗日志数据
49 2
|
4月前
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
2月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
274 0
|
4月前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
143 1
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
3月前
|
SQL 人工智能 运维
在阿里云日志服务轻松落地您的AI模型服务——让您的数据更容易产生洞见和实现价值
您有大量的数据,数据的存储和管理消耗您大量的成本,您知道这些数据隐藏着巨大的价值,但是您总觉得还没有把数据的价值变现出来,对吗?来吧,我们用一系列的案例帮您轻松落地AI模型服务,实现数据价值的变现......
251 3
|
4月前
|
存储 监控 网络协议
在Linux中,如何使用 tcpdump 监听主机为 192.168.1.1,tcp 端⼝为 80 的数据,并将将输出结果保存输出到tcpdump.log?
在Linux中,如何使用 tcpdump 监听主机为 192.168.1.1,tcp 端⼝为 80 的数据,并将将输出结果保存输出到tcpdump.log?
|
4月前
|
数据库 Java 监控
Struts 2 日志管理化身神秘魔法师,洞察应用运行乾坤,演绎奇幻篇章!
【8月更文挑战第31天】在软件开发中,了解应用运行状况至关重要。日志管理作为 Struts 2 应用的关键组件,记录着每个动作和决策,如同监控摄像头,帮助我们迅速定位问题、分析性能和使用情况,为优化提供依据。Struts 2 支持多种日志框架(如 Log4j、Logback),便于配置日志级别、格式和输出位置。通过在 Action 类中添加日志记录,我们能在开发过程中获取详细信息,及时发现并解决问题。合理配置日志不仅有助于调试,还能分析用户行为,提升应用性能和稳定性。
65 0