开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第三阶段): 网站流量日志分析—数据入库—ODS 数据导入操作】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/695/detail/12202
网站流量日志分析—数据入库—ODS 数据导入操作
内容介绍:
一、 原始日志表
二、 点击流模型之 pageviews
三、 点击流迷行之 visit
四、 时间维度表
五、 总结
一、原始日志表
因为在项目当中,在预处理阶段采用的是本地模式,所以对应的净化数据都在本地 windows 平台上,所以说要做一个上传的操作才可以填充进去。
有一个脚本叫做 ods-data-import,这里描述如何进行数据的填充,如下图,
首先 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 当中终端做一个自动换行,
通常在企业中可以把查询的信息复制粘贴,打开一个 node 新的标签页, Ctrl+V 做一粘贴,这里面(如下图)进行是否自动换行,如果
把自动换行勾出来,这跟里面看到的一样,所以不需要打开自动换行,把自动换行去掉,这样看起来比较标准,验证一下,比如说第一个字段校验符验证成功,用户的IP、时间、信息、resquet 请求页面,状态码,发送的数据量、referer 从哪里来的,后面一个终端信息,最后一个是所谓的日期分区的日期,这样就变得比较完整,这就完成第一个表的数据导入。
二、 点击流模型之 pageviews
首先把数据确定一下,打开本地,选择 part-r-00000当中,接下来把数据托载到路径下,选择运行,
接下来是导入操作,导入操作命令基本上跟刚才一样,只要做表相关的修改即可,复制粘贴,注意名字叫做 part-r 而不是 pary-0,这些细节一定要注意,接下来是 into table 是点击流模型表,叫做 pageviews ,再次强调这些没有什么技巧难度,需要心细,细心即可没有捷径可做,后面顺序保持一致,也是20181101,没有问题之后做一个复制,在 hive 当中做一个执行,
这样就完成了这个表的顺序接通,还有验证表的数据是否正确。复制输入select * from
这个表注意不要忘记加 limit 返回条件限制。依然还是把这个映射数据复制粘贴出来,在 node 做一个查看,这就是字段比较多自动换行的原因导致的。
打开一个新的标签页粘贴一下,来验证一下,当中有 IP 、时间、请求的页面、步骤、页面停留时间、referer 从哪来的以及 agent 终端信息,发送输出量、状态码,分区信息非常成功,这样就映射成功了。
三、 点击流模型之 visit
这个表依然之前一样,它的数据在本地 visit 当中,它的名字因为也叫做 part-r-00000,为了不重复,把之前的 pary-r-00000 删除,删除之后把 visit 拖过来上传,再做一个填充,它的命令跟之前差不多一样,就表名改一下,复制过来,加载本地数据,名字一样 into table 这不叫 pageviews,叫做 views 。如果不行,写一个 tables ,确定一下表名。
这是在企业当中常见的操作,后面依然保持一致,复制又导入了一个网络数据,按照正常逻辑,首次导入强烈建议检查一下映射是否成功,如果不成功后面不好做,接下来还是 select * from
这个表,注意所有字段一定要去查看,加一个 limit 返回限制,
查完之后这个结果复制粘贴出来,做一个查看确认看一下字段映射是否成功,打开一个新的 node 页面,当中有时间、进入页面离开时间,进入页面离开页面,从哪来的、访问多少页面,这就是点击流模型的 visit 。
四、 维度表
Show tables 查看,把原始日志表搞定,点击流模型搞定以及时间维度表,时间维度表跟业务相关,业务数据都是跟2018年11月1号的,时间维度至少能够涵盖2018年11月1号,如果是2017 年没有意义,2019年的也没有意义,打开 dim-time-dat 的文件,这个文件就是提供的时间维度数据,这当中的数据没有过多的难度,在企业当中使用脚本来生成,看日期2018年10月31号一直到 11月2号,当中正好涵盖了11月1号的24小时,后面要去分析每个小时有多少人,做一个关联进行分组统计,接下来把数据上传填充。
因为它不是所谓的分区表,所以就比较简单。把分区信息去掉,首先第一点要明确它的表的字段,表文件结构叫做 dim-time-dat ,把它导入到时间维度表当中,复制粘贴,填充完之后把命令加载到 hive 当中,接下来是 select *form 验证,输入select *form t_dim_time回车,映射非常成功。
五、总结
至此就完成了 ODS 数据导入操作,这个导入操作没有什么技术难点操作重点注意,要心细注意确定数据在哪里表在哪里,局限一下表是否映射成功,这就是数据导入操作。