大数据实训05--网站离线日志分析实战

news/2024/5/20 2:06:37/文章来源:https://blog.csdn.net/weixin_41499217/article/details/106955737

用户行为分析

是指在获得网站访问量基本数据的情况下,对有关数据进行统计、分析,从中发现用户访问网站的规律,并将这些规律与网络营销策略等相结合,从而发现目前网络营销活动中可能存在的问题, 并为进一步修正或重新制定网络营销策略提供依据。这是狭义的只指网络上的用户行为分析。 

要分析的KPI:浏览量PV、注册用户数、IP数、跳出用户数、访问页面详细统计

运行流程

数据源----数据采集(存到HDFS)-----数据清洗(MapReduce并行计算封装成jar包)---数据统计分析(hive)

数据转移(sqoop)----可视化展示

  • 日志数据上传到HDFS(在此清晰的是当天的日志文件) 
  • 清洗数据
  • 建立分区表
  • 关联数据
  • 统计分析,并通过sqoop转化数据
  • 通过Echarts做可视化展示

开启Tomcat

建立分区表以日期作为分区的指标(将清洗后的数据存入到hive) 方便后续查看

添加时间分区 

命令及SQL语句

#创建目录
hdfs dfs -mkdir -p /logs/bbs-
# 上传文件hdfs
hdfs dfs -put /home/hpe/access_2017_05_31.log /logs/bbs/#执行mapReduce程序
hadoop jar /home/LogCleanJob.jar /logs/bbs/access_2017_05_31.log /logs/bbs/cleaned/2017_05_31#建立分区表以日期作为分区的指标(将清洗后的数据存入到hive)
create external table bbslogs(ip string,atime string,url string)partitioned by (logdate string)row format delimitedfields terminated by '\t' location '/logs/bbs/cleaned';#增加分区(针对2017_05_31的日志进行分区)
alter table bbslogs 
add partition(logdate='2017_05_31') location '/logs/bbs/cleaned/2017_05_31';#查询日志表中的数据
select * from bbslogs where atime='20170531011507';#使用HQL统计关键指标
#(1) 每天的pv量
create table bbslogs_pv_2017_05_31 as select count(1) as PV from bbslogs where logdate='2017_05_31' 
#(2) 每天注册用户数
create table bbslogs_register_2017_05_31 as select count(1) as REGUSER from 
bbslogs where logdate='2017_05_31' and instr(url,'member.php?mod=register')>0
#(3)每天独立IP数
create table bbslogs_ip_2017_05_31 as select count(distinct ip) as IP from 
bbslogs where logdate='2017_05_31'
#(4)用户跳出数
create table bbslogs_jumper_2017_05_31 as select count(1) as jumper from 
(select count(ip) as times from bbslogs where logdate='2017_05_31' group by ip having times=1) e
# 汇总表(将所有关键指标放入一张汇总表中)
create table bbslogs_2017_05_31 as 
select '2017_05_31',a.pv,b.reguser,c.ip,d.jumper
from bbslogs_pv_2017_05_31 a 
join bbslogs_register_2017_05_31 b on 1=1
join bbslogs_ip_2017_05_31 c on 1=1 
join bbslogs_jumper_2017_05_31 d on 1=1 #(5)访问页面详细统计
create table bbslogs_detail_2017_05_31 as select logdate,url,count(url) as count from
bbslogs where logdate='2017_05_31' group by url,logdate
#(6)每天不同时段PV量
create table bbslogs_day_pv_2017_05_31 as select v.logdate,v.hour,count(*) 
from (select logdate,substr(atime,9,2) as hour from bbslogs WHERE logdate='2017_05_31') v 
group by hour,logdate#汇总表 数据转化 export to mysql
sqoop export --connect jdbc:mysql://192.168.228.100:3306/bbslogs --username root --password root --table bbs_logs_stat --fields-terminated-by '\001' --export-dir "/user/hive/warehouse/bbslogs_2017_05_31"#每天不同时段pv量 转化 bbs_days_ pv
sqoop export --connect jdbc:mysql://192.168.228.100:3306/bbslogs --username root --password root --table bbs_days_pv --fields-terminated-by '\001' --export-dir "/user/hive/warehouse/bbslogs_day_pv_2017_05_31"#详细页面pv量
sqoop export --connect jdbc:mysql://192.168.228.100:3306/bbslogs --username root --password root --table bbs_pv_detail --fields-terminated-by '\001' --export-dir  "/user/hive/warehouse/bbslogs_detail_2017_05_31"

设计脚本文件自动执行系列操作

#!/bin/sh
yesterday=$(date --date='1 days ago' +%Y_%m_%d)
logdirdate=$(date --date='1 days ago' +%Y-%m-%d)
echo ${yesterday}
cd /home/hadoop-2.7.5/bin
# 上传文件hdfs
./hdfs dfs -put /home/apache-tomcat-8.0.53/logs/localhost_access_log.${logdirdate}.txt /logs/bbs/#执行mapReduce程序
./hadoop jar /root/LogCleanJob.jar /logs/bbs/localhost_access_log.${logdirdate}.txt /logs/bbs/cleaned/${yesterday}cd /home/hive-2.3/bin
# 增加分区
./hive -e "ALTER TABLE bbslogs ADD PARTITION(logdate='${yesterday}') LOCATION '/logs/bbs/cleaned/${yesterday}';"#1每天的PV量
./hive -e "CREATE TABLE bbslogs_pv_${yesterday} AS SELECT COUNT(1) AS PV FROM bbslogs WHERE logdate='${yesterday}';"
#2每天的注册用户数
./hive -e "CREATE TABLE bbslogs_register_${yesterday} AS SELECT COUNT(1) AS REGUSER FROM bbslogs WHERE logdate='${yesterday}' AND INSTR(ur
l,'register')>0;"#3每天的独立IP数
./hive -e "CREATE TABLE bbslogs_ip_${yesterday} AS SELECT COUNT(DISTINCT ip) AS IP FROM bbslogs WHERE logdate='${yesterday}';"
#4用户跳出数
./hive -e "CREATE TABLE bbslogs_jumper_${yesterday} AS SELECT COUNT(1) AS jumper FROM (SELECT COUNT(ip) AS times FROM bbslogs WHERE logdat
e='${yesterday}' GROUP BY ip HAVING times=1) e;"# 汇总表
./hive -e "CREATE TABLE bbslogs_${yesterday} AS SELECT '${yesterday}', a.pv, b.reguser, c.ip, d.jumper FROM bbslogs_pv_${yesterday} a JOINbbslogs_register_${yesterday} b ON 1=1 JOIN bbslogs_ip_${yesterday} c ON 1=1 JOIN bbslogs_jumper_${yesterday} d ON 1=1;"
#删除表
./hive -e "drop table bbslogs_pv_${yesterday};"
./hive -e "drop table bbslogs_register_${yesterday};"
./hive -e "drop table bbslogs_ip_${yesterday};"
./hive -e "drop table bbslogs_jumper_${yesterday}; "#5访问页面详细统计
./hive -e "CREATE TABLE bbslogs_detail_${yesterday} AS SELECT logdate,url,COUNT(url) AS count FROM bbslogs WHERE logdate='${yesterday}' GR
OUP BY url,logdate; "
#6每天不同时段pv量
./hive -e "create table bbslogs_day_pv_${yesterday} AS select v.logdate,v.hour,count(*) from (select logdate,substr(atime,9,2) as hour fro
m bbslogs where logdate='${yesterday}') v  group by hour,logdate;"

可视化展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_848755.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

科研网站推荐

科研网站推荐学习网站综述参考文献科研工具实用工具流程图二维码学习网站 廖雪峰的官方网站国家自然科学基金委员会项目公布 综述 paper-digest :输入论文DOI号,AI生成文章介绍PAPER DIGEST :输入研究方向,AI寻找相关论文并将其…

快速搭建个人网站

目录宝塔简介tomcat购买云服务器下载与配置上传文件域名本次实验使用宝塔、tomcat等工具快速的搭建个人网站。 宝塔简介 宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能。 tomcat Tomc…

go语言学习网站大全

最近在学习go语言,搜集了一些学习网站,也有大量的面试题,及练手项目 分享给大家,一起学习 可以关注我的公众号:菜鸟内推 分享求职干货,大厂面经~ go语言系列 go Interview 语雀 https://www.yuque.com/go…

SEO

解释: SEO是由英文Search Engine Optimization缩写而来, 中文意译为“搜索引擎优化”。SEO是指通过站内优化比如网站结构调整、网站内容建设、网站代码优化等以及站外优化。 关于SEO,严谨的定义如下:SEO是指在了解搜索引擎自然排名…

MVC.NET 发布后,部署到iis ,网站中的Bootstrap的字体图标不能正常显示

时隔多日没有在博客中记录自己遇到的问题及解决方案了 ,今天给大家分享一个可能会遇到的一个鸡肋bug ! 如果你的项目是MVC并且在项目中引用了 Boostrap 框架,你在编辑发布后部署到iis的时候,网站的boostrap 字体图标可能会变成框框了 &#x…

使用hexo+github免费搭建个人博客网站超详细教程

很多人都想搭建自己的博客,但是奈何技术有限,服务器部署,HTML,域名解析,等等,这一大堆东西可真有的折腾。 但是如果有这样一个机会,不需要太复杂的操作,不要服务器,不要…

selenium在爬虫领域的初涉(自动打开网站爬取信息)

selenium简介 Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能…

java开源网站

Java开源大全(www.open-open.com)收录最全,最新的Java开源软件,发布最新IT资讯,提供开发文档、技术经验在线分享平台。www.open-open.com/ Java开源软件 - 开源软件库 - 开源中国社区 开源中国社区(OSChina)共收录了 5810 款Java 软件... 共有5810款Java 开源软件,第1页Android…

Spring cloud实战 从零开始一个简单搜索网站_freemark 以及configserver的应用(二)

先来说下我的网站架构吧 前面大家也看到了 既然叫博客搜 自然是搜索 博客的 我把每个网站会抽象成一个Client (为了更好的学习cloud) 上面只是展示了主要部分 像Hystrix Ribbon Zuul等等就不画上去了 下面我们再建一个Client 选Eureka Server就可以了 修改…

如何使用postman访问网站

1、输入Request URL2、选择Request Method3、输入需要的Request Headers注意:一般token会在Headers中 转载于:https://www.cnblogs.com/jishugaochao/p/10192076.html

互联网网站架构升级----分布式环境的构建

随着网络流量爆发式增长,几百人维护一个项目将是一个可怕的噩梦,业务拆分势在必行。拆分的业务形成一个个独立的系统,系统间的协调又变成了一个棘手的问题,所以维护这些系统间协调关系的分布式环境组件将发挥至关重要的作用。 由于…

scrapy-redis案例(一)爬取中国红娘相亲网站

前言:本案例将分为三篇。 第一篇,使用scrapy框架来实现爬取中国红娘相亲网站。 第二篇,使用scrapy-redis 简单的方式爬取中国红娘相亲网站。(使用redis存储数据,请求具有持续性,但不具备分布式)…

scrapy-redis案例(二)爬取中国红娘相亲网站

前言:本案例将分为三篇。 第一篇,使用scrapy框架来实现爬取中国红娘相亲网站。 第二篇,使用scrapy-redis 简单的方式爬取中国红娘相亲网站。(使用redis存储数据,请求具有持续性,但不具备分布式)…

scrapy-redis案例(三)爬取中国红娘相亲网站

前言:本案例将分为三篇。 第一篇,使用scrapy框架来实现爬取中国红娘相亲网站。 第二篇,使用scrapy-redis 简单的方式爬取中国红娘相亲网站。(使用redis存储数据,请求具有持续性,但不具备分布式)…

python-scrapy模拟登陆网站--登陆青果教务管理系统(一)

前言: 第一篇,分析青果教务管理系统登陆模块,理清思路 第二篇,使用常规的python常用库 requests来实现模拟登陆 第三篇,使用scrapy来实现模拟登陆 目的在于了解模拟登陆网站的要点和方法,了解http请求的一些…

python-scrapy模拟登陆网站--登陆青果教务管理系统(二)

前言: 第一篇,分析青果教务管理系统登陆模块,理清思路 第二篇,使用常规的python常用库 requests来实现模拟登陆 第三篇,使用scrapy来实现模拟登陆 目的在于了解模拟登陆网站的要点和方法,了解http请求的一些…

python-scrapy模拟登陆网站--登陆青果教务管理系统(三)

前言: 第一篇,分析青果教务管理系统登陆模块,理清思路 第二篇,使用常规的python常用库 requests来实现模拟登陆 第三篇,使用scrapy来实现模拟登陆 目的在于了解模拟登陆网站的要点和方法,了解http请求的一些…

【问底】徐汉彬:大规模网站架构的缓存机制和几何分形学

【问底】徐汉彬:大规模网站架构的缓存机制和几何分形学 发表于18小时前| 2273次阅读| 来源CSDN| 14 条评论| 作者徐汉彬问底CDN缓存徐汉彬allowtransparency"true" frameborder"0" scrolling"no" src"http://hits.sinajs.cn/A1/…

在IIS上部署PHP网站

1、启动iis服务器,打开IIS服务器 打开IIS服务器,点击网站,右击“添加网站” 2、创建网站 点击“添加网站”后,进入页面填写网站相关内容,如:网站名称、物理路径(网站所在文件夹),点击“确定”创建成功 3、…

借助花生壳把内网网站映射给外网。(内网穿透/路由器端口映射)、外网控制内网...

其实这个东西几年前我就弄过,但是当时心智不成熟,没学会怎么玩耍,今天玩了一把也没啥的, 1.搭建网站 假设内网电脑是192.168.100.9 访问Http://192.168.100.9能打开网站,这样就ok了,不能用的自己百度. 2. 端口映射 貌似…