10分布式数据仓库 HIVE -- HIVE案例实战1 apache common日志分析
来源:互联网 发布:全站仪传输软件 编辑:程序博客网 时间:2024/05/22 06:19
1 日志分析场景
某网站的apache common每天产生一个日志日志文件。将每一天的日志文件,按照日期作为分期,导入HIVE数据仓库。通过hive分析网站用户行为,如:PV,注册数,UV
ip 时间 访问地址 访问状态 流量
8.35.201.163 - - [30/May/2013:17:38:21 +0800] "GET /uc_server/data/avatar/000/04/87/94_avatar_middle.jpg HTTP/1.1" 200 5117
2 分析网站用户行为的思路
1 PV,网站的总访问量,count(*) from tablename where dt='20141224';
2 UV,独立IP总访问量,select count(distinct ip) from tablename where dt='20141224';
3 注册用户数,分析register.jsp?post from tablename where dt='20141224'。
3 解决方案
3.1 使用shell命令把数据从linux磁盘上传到HDFS中
3.1.1 在hdfs中创建目录,命令如下
$HADOOP_HOME/bin/hadoop fs -mkdir /hmbbs_logs
3.1.2 写一个shell脚本,叫做upload_to_hdfs.sh,内容大体如下
yesterday=`date --date='1 days ago' +%Y_%m_%d`
hadoop fs -put /apache_logs/access_${yesterday}.log /hmbbs_logs
3.1.3 把脚本upload_to_hdfs.sh配置到crontab中,执行命令crontab -e, 写法如下
* 1 * * * upload_to_hdfs.sh
3.2 使用MapReduce对数据进行清洗,把原始处理清洗后,放到hdfs的/hmbbs_cleaned目录下,每天产生一个子目录。
3.3 使用hive对清洗后的数据进行统计。
3.3.1 建立一个外部分区表,脚本如下
CREATE EXTERNAL TABLE hmbbs(ip string, atime string, url string) PARTITIONED BY (logdate string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION '/hmbbs_cleaned';
3.3.2 增加分区,脚本如下
ALTER TABLE hmbbs ADD PARTITION(logdate='2013_05_30') LOCATION '/hmbbs_cleaned/2013_05_30';
把代码增加到upload_to_hdfs.sh中,内容如下
hive -e "ALTER TABLE hmbbs ADD PARTITION(logdate='${yesterday}') LOCATION '/hmbbs_cleaned/${yesterday}';"
3.3.3 统计每日的pv,代码如下
CREATE TABLE hmbbs_pv_2013_05_30 AS SELECT COUNT(1) AS PV FROM hmbbs WHERE logdate='2013_05_30';
统计每日的注册用户数,代码如下
CREATE TABLE hmbbs_reguser_2013_05_30 AS SELECT COUNT(1) AS REGUSER FROM hmbbs WHERE logdate='2013_05_30' AND INSTR(url,'member.php?mod=register')>0;
统计每日的独立ip,代码如下
CREATE TABLE hmbbs_ip_2013_05_30 AS SELECT COUNT(DISTINCT ip) AS IP FROM hmbbs WHERE logdate='2013_05_30';
统计每日的跳出用户,代码如下
CREATE TABLE hmbbs_jumper_2013_05_30 AS SELECT COUNT(1) AS jumper FROM (SELECT COUNT(ip) AS times FROM hmbbs WHERE logdate='2013_05_30' GROUP BY ip HAVING times=1) e;
把每天统计的数据放入一张表
CREATE TABLE hmbbs_2013_05_30 AS SELECT '2013_05_30', a.pv, b.reguser, c.ip, d.jumper FROM hmbbs_pv_2013_05_30 a JOIN hmbbs_reguser_2013_05_30 b ON 1=1 JOIN hmbbs_ip_2013_05_30 c ON 1=1 JOIN hmbbs_jumper_2013_05_30 d ON 1=1 ;
3.4 使用sqoop把数据导出到mysql中
- 10分布式数据仓库 HIVE -- HIVE案例实战1 apache common日志分析
- 11分布式数据仓库 HIVE -- HIVE案例实战2 SLA
- Hive日志分析案例
- hive 分析apache日志
- 04分布式数据仓库 HIVE -- 导出分析结果
- 【hive实战】使用hive分析 hadoop 日志
- 【hive实战】使用hive分析 hadoop 日志
- Hive日志分析案例二
- hive数据仓库框架之日志分析
- Hive实战之日志分析
- Hive实战之日志分析
- 09分布式数据仓库 HIVE -- HIVE优化
- Hive学习五--日志案例分析
- Hive日志分析案例(一)
- 十九、Hive日志分析案例一
- 07分布式数据仓库 HIVE -- 函数
- HIve实战分析Hadoop的日志
- Hive-数据分析和数据仓库
- (原创)kali linux下劫持百度和QQ空间cookie
- ios 简易的本地收藏demo
- 关于Android 传感器坐标与读数及实例(转载)
- 【CUDA并行编程之五】计算向量的欧式距离
- Windows下WebStorm使用SVN(转)
- 10分布式数据仓库 HIVE -- HIVE案例实战1 apache common日志分析
- popStar2
- Subsets II
- java注解实例
- ExcelUtils简单上手
- http://www.cnblogs.com/BeginMan/category/468151.html
- nodejs npm常用命令
- Hadoop大数据时代:Hadoop&YarnSpark企业级最佳实践 (4天)
- 01_Introduction介绍