| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
10年前发布

使用hadoop平台进行小型网站日志分析

0.上传日志文件到linux中,通过flume将文件收集到hdfs中。
执行命令/home/cloud/flume/bin/flume-ng agent -n a4 -c conf -f /home/cloud/flume/conf/a4.conf -Dflume.root.logger=DEBUG,console


1.建立hive表
create external table bbslog (ip string,logtime string,url string) partitioned by (logdate string) row format delimited fields terminated by '\t' location '/cleaned';


2.创建shell脚本
touch daily.sh
添加执行权限
chmod +x daily.sh
daily.sh:
CURRENT=date +%Y%m%d
#对数据进行清理,保存到cleaned文件夹,按照当前日期进行保存
/home/cloud/hadoop/bin/hadoop jar /home/cloud/cleaner.jar /flume/$CURRENT /cleaned/$CURRENT
#修改hive表,添加当前日期的分区
/home/cloud/hive/bin/hive -e "alter table bbslog add partition (logdate=$CURRENT) location 'cleaned/$CURRENT'"
#使用hive进行分析,根据业务需求而定
#统计pv并计入每日的pv表
/home/cloud/hive/bin/hive -e "create table pv$CURRENT row format delimited fields terminated by '\t' as select count(*) from bbslog where logdate=$CURRENT;"
#统计点击次数过20的潜在用户
/home/cloud/hive/bin/hive -e "create table vip
$CURRENT row format delimited fields terminated by '\t' as select $CURRENT,ip,count() as hits from bbslog where logdate=$CURRENT group by ip having hits > 20 order by hits desc"
#查询uv
/home/cloud/hive/bin/hive -e "create table uv$CURRENT row format delimited fields terminated by '\t' as select count(distinct ip) from bbslog where logdate=$CURRENT"
#查询每天的注册人数
/home/cloud/hive/bin/hive -e "create table reg
$CURRENT row format delimited fields terminated by '\t' as select count(
) from bbslog where logdate=$CURRENT AND instr(url,'member.php?mod=register')>0"
#将hive表中的数据导入mysql
/home/cloud/sqoop/bin/sqoop export --connect jdbc:mysql://cloud3:3306/jchubby --username root --password JChubby123 --export-dir "/user/hive/warehouse/vip_$CURRENT" --table vip --fields-terminated-by '\t' 

 本文由用户 jopen 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1428914162330.html
Hadoop 分布式/云计算/大数据