yhd日志分析(一)
yhd日志分析(一)
依据yhd日志文件统计分析每日各时段的pv和uv
建hive表, 表列分隔符和文件保持一致
load数据到hive表
写hive sql统计pv和uv, 结果保存到hive表2
使用sqoop从hive表2导出结果数据到mysql
mysql表格式: daily_hour_visit(date, hour,uv, pv)
环境:
CentOS 6.4
hadoop-2.5.0-cdh5.3.6
hive-0.13.1-cdh5.3.6
sqoop-1.4.5-cdh5.3.6
1, 建立hive表
根据yhd日志数据格式,使用分区表,分区字段为日期date和小时数hour
create table if not exists yhd_log(
id string,
url string,
referer string,
keyword string,
type string,
guid string,
pageId string,
moduleId string,
linkId string,
attachedInfo string,
sessionId string,
trackerU string,
trackerType string,
ip string,
trackerSrc string,
cookie string,
orderCode string,
trackTime string,
endUserId string,
firstLink string,
sessionViewNo string,
productId string,
curMerchantId string,
provinceId string,
cityId string,
fee string,
edmActivity string,
edmEmail string,
edmJobId string,
ieVersion string,
platform string,
internalKeyword string,
resultSum string,
currentPage string,
linkPosition string,
buttonPosition string
)
partitioned by(date string, hour int)
row format delimited fields terminated by '\t'
stored as textfile;
2 Load数据到hive表
先把数据2015082818和2015082819上传到目录/home/hadoop (我的家目录),然后load到hive表中
LOAD DATA LOCAL INPATH '/home/hadoop/2015082818' OVERWRITE INTO TABLE yhd_log PARTITION (date='20150828', hour=18);
LOAD DATA LOCAL INPATH '/home/hadoop/2015082819' OVERWRITE INTO TABLE yhd_log PARTITION (date='20150828', hour=19);
测试数据是否导入成功
select url, endUserId from yhd_log where date='20150828'and hour=18 limit 10;
select url, endUserId from yhd_log where date='20150828'and hour=19 limit 10;


3 hive sql统计
统计pv和uv,并将结果写入新的表: yhd_log_stat中
第一次使用ctas创建表
create table if not exists yhd_log_stat
as
select '20150828' as date, 18 as hour, count(url) as pv, count(distinct guid) as uv from yhd_log where date='20150828' and hour=18;
from yhd_log
insert into table yhd_log_stat
select '20150828' as date, 19 as hour,count(url) as pv, count(distinct guid) as uv
where date='20150828' and hour=19
查看yhd_log_stat中的数据

4 使用sqoop把yhd_log_stat导出到mysql
先在mysql上把表建立好
CREATE TABLE `yhd_log_stat` (
`date` VARCHAR(50) NOT NULL DEFAULT '0',
`hour` TINYINT(4) NOT NULL DEFAULT '0',
`pv` BIGINT(20) NULL DEFAULT '0',
`uv` BIGINT(20) NULL DEFAULT '0',
PRIMARY KEY (`date`, `hour`),
INDEX `date` (`date`),
INDEX `hour` (`hour`)
)
使用sqoop export,把数据从hdfs导出到mysql
sqoop export --connect jdbc:mysql://mysql-server:3306/test --username mysql --password mysql-pwd --table yhd_log_stat --export-dir /user/hive/warehouse/db0731.db/yhd_log_stat --columns date,hour,pv,uv --input-fields-terminated-by '\001'
在mysql中查看导出结果

附件: yhd日志数据
yhd日志分析(一)的更多相关文章
- yhd日志分析(二)
yhd日志分析(二) 继续yhd日志分析,统计数据 日期 uv pv 登录人数 游客人数 平均访问时长 二跳率 独立ip数 1 分析 登录人数 count(distinct endUserId) 游客 ...
- 【转】gc日志分析工具
性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析. Gc日志参数 通过在tomcat启动脚本中添加相关参数生成gc ...
- 海量日志分析方案--logstash+kibnana+kafka
下图为唯品会在qcon上面公开的日志处理平台架构图.听后觉得有些意思,好像也可以很容易的copy一个,就动手尝试了一下. 目前只对flume===>kafka===>elacsticSea ...
- ELK+Kafka集群日志分析系统
ELK+Kafka集群分析系统部署 因为是自己本地写好的word文档复制进来的.格式有些出入还望体谅.如有错误请回复.谢谢! 一. 系统介绍 2 二. 版本说明 3 三. 服务部署 3 1) JDK部 ...
- Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍
网站日志分析项目案例(一)项目介绍:当前页面 网站日志分析项目案例(二)数据清洗:http://www.cnblogs.com/edisonchou/p/4458219.html 网站日志分析项目案例 ...
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
网站日志分析项目案例(一)项目介绍:http://www.cnblogs.com/edisonchou/p/4449082.html 网站日志分析项目案例(二)数据清洗:当前页面 网站日志分析项目案例 ...
- Hadoop学习笔记—20.网站日志分析项目案例(三)统计分析
网站日志分析项目案例(一)项目介绍:http://www.cnblogs.com/edisonchou/p/4449082.html 网站日志分析项目案例(二)数据清洗:http://www.cnbl ...
- MyCAT日志分析
MyCAT日志对于了解MyCAT的运行信息不可获取,譬如MyCAT是否采用读写分离,对于一个查询语句,MyCAT是怎样执行的,每个分片会分发到哪个节点上等等. 默认是info级别,通过log4j.xm ...
- ELK+redis搭建nginx日志分析平台
ELK+redis搭建nginx日志分析平台发表于 2015-08-19 | 分类于 Linux/Unix | ELK简介ELKStack即Elasticsearch + Logstas ...
随机推荐
- 在线重定义(Rdefine Table online)
二. 概念理解 在线重定义用于对表的逻辑或者物理结构的修改,而且在修改时不影响表的可用性与传统方式相比.当一个表被重定义时,会被锁定为exclusive mode很短一段时间,这段时间的 ...
- oracle参数open_cursors和session_cached_cursor详解!
SQL> show parameter open_cursors --每个session(会话)最多能同时打开多少个cursor(游标) NAME ...
- 初探接口测试框架--python系列5
点击标题下「蓝色微信名」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是 ...
- svn 终端命令
你可以仅仅删除冲突的文件并且提交,但是svn resolved除了删除冲突文件,还修正了一些记录在工作拷贝管理区域的记录数据,所以我们推荐你使用这个命令. 恢复本地修改 svn revert [-- ...
- php get传递数据
url:?goods[]=924&goods[]=967&goods[]=993 <?php if($_GET){ print_r($_GET); } ...
- php文件大小单位转换GB MB KB
private function formatBytes($size){ $units = array('字节','K','M','G','T'); $i = 0; for( ; $size>= ...
- 在C++中调用DLL中的函数 (3)
1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...
- myecplise 添加svn插件
myecplise svn插件下载地址 http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240 1.SVN下载地址 ...
- 见怪不怪的typedef
typedef是C++中的一个十分重要的关键字,它有强大的功能和方法的用途.但是有时候,碰到一些用到typedef的地方却感到很奇怪了. 给个栗子尝尝: typedef void(*pFun)(voi ...
- C++类成员函数的 重载、覆盖和隐藏区别
重载:成员函数被重载的特征: (1)相同的范围(在同一个类中): (2)函数名字相同: (3)参数不同: (4)virtual 关键字可有可无. #include <iostream> u ...