用Shell根据AcessLog统计对应的点击量
来源:互联网 发布:西门子触摸屏编程 编辑:程序博客网 时间:2024/05/16 04:56
环境说明:
AcessLog已经装载到Hdfs上,数据的存储是按日期存放,每天数据又按机器名、小时命名的文件进行存放。正常情况,一天的数据文件2300多个,大小是3~400G。
1、将数据按小时分块,并行计算
执行时长,20分钟左右。目前三种方案中较理想与合理的一种。
2、以变量的相加的方式每文件计算
执行时长1小时20分钟左右,稍慢。
3、每文件计算一次并行计算
直接导致的结果就是报“ fork: retry: Resource temporarily unavailable”,想一下2300多个进程一起开,是很恐怖;还是按小时,并行调度比较靠谱。
AcessLog已经装载到Hdfs上,数据的存储是按日期存放,每天数据又按机器名、小时命名的文件进行存放。正常情况,一天的数据文件2300多个,大小是3~400G。
1、将数据按小时分块,并行计算
执行时长,20分钟左右。目前三种方案中较理想与合理的一种。
#!/bin/bash for(( i = 0; i < 24; i++ )) do {hour2=`printf "%02d\n" $i`hadoop dfs -cat /tmp/oss_access/2017-04-09/*localhost_access_log.2017-04-09.$hour2.txt | grep '/api/opening/screen/get.htm' |wc -l > 0409-$hour2.txt} & done wait datecat 0409-*txt|awk '{for(i=1;i<=NF;i++)a[i]+=$i}END{l=length(a);for(j=1;j<=l;j++) printf a[j]" ";printf "\n"}' >kp-0409.txt
#!/bin/bash for(( i = 0; i < 24; i++ )) do {hour2=`printf "%02d\n" $i`hadoop dfs -cat /tmp/oss_access/2017-04-09/*localhost_access_log.2017-04-09.$hour2.txt | grep '/api/remix-index.htm' |wc -l > 0409-syzs-$hour2.txt} & done wait datecat 0409-syzs*txt|awk '{for(i=1;i<=NF;i++)a[i]+=$i}END{l=length(a);for(j=1;j<=l;j++) printf a[j]" ";printf "\n"}' >syzs-0409.txt
#!/bin/bash for(( i = 0; i < 24; i++ )) do {hour2=`printf "%02d\n" $i`hadoop dfs -cat /tmp/oss_access/2017-04-09/*localhost_access_log.2017-04-09.$hour2.txt | grep '/api/room/get.htm'| grep 'fromView=1'| grep 'fromPos=1' |wc -l > 0409-syjd-$hour2.txt} & done wait datecat 0409-syjd*txt|awk '{for(i=1;i<=NF;i++)a[i]+=$i}END{l=length(a);for(j=1;j<=l;j++) printf a[j]" ";printf "\n"}' >syjd-0409.txt
#!/bin/bash for(( i = 0; i < 24; i++ )) do {hour2=`printf "%02d\n" $i`hadoop dfs -cat /tmp/oss_access/2017-04-09/*localhost_access_log.2017-04-09.$hour2.txt | grep '/api/room/get.htm' | grep 'fromView=3'| grep 'fromPos=1' |wc -l > 0409-ymtt-$hour2.txt} & done wait datecat 0409-ymtt*txt|awk '{for(i=1;i<=NF;i++)a[i]+=$i}END{l=length(a);for(j=1;j<=l;j++) printf a[j]" ";printf "\n"}' >ymtt-0409.txt
2、以变量的相加的方式每文件计算
执行时长1小时20分钟左右,稍慢。
#!/bin/bash i=0for hdfs_path in `hadoop dfs -ls /tmp/oss_access/2017-04-09/ |awk '{print $8;}'`do{echo $hdfs_pathnum=`hadoop dfs -cat $hdfs_path | grep '/api/room/get.htm' | grep 'fromView=3'| grep 'fromPos=1' |wc -l`i=$[i + num]}doneecho $i
3、每文件计算一次并行计算
直接导致的结果就是报“ fork: retry: Resource temporarily unavailable”,想一下2300多个进程一起开,是很恐怖;还是按小时,并行调度比较靠谱。
#!/bin/bash for hdfs_path in `hadoop dfs -ls /tmp/oss_access/2017-04-09/ |awk '{print $8;}'`do{#echo $hdfs_pathhdfs_path_like=${hdfs_path//\//-};#echo xx_$hdfs_path_likehadoop dfs -cat $hdfs_path | grep '/api/room/get.htm' | grep 'fromView=3'| grep 'fromPos=1' |wc -l > xx_$hdfs_path_like.txt} &donewaitdatecat xx*txt|awk '{for(i=1;i<=NF;i++)a[i]+=$i}END{l=length(a);for(j=1;j<=l;j++) printf a[j]" ";printf "\n"}' >ymtt-0409-new.txt
0 0
- 用Shell根据AcessLog统计对应的点击量
- Python根据AccessLog统计对应Url的点击量
- Python根据AccessLog统计对应Url的点击量2
- JSP 点击量统计
- 点击量统计_application
- JSP 点击量统计
- JSP点击量统计
- JSP 点击量统计
- JSP 点击量统计
- JSP 点击量统计
- 定时统计页面点击量
- 静态页统计点击量
- Jsp页面点击量统计
- 21_JSP 点击量统计
- 通过游标高效的完成商品点击量的统计
- 用Python编写MapReduce代码与调用-统计accessLog中链接的点击量
- Git根据日期统计代码量
- SQL技巧:如何统计博客每天的总点击量和每天的总点击人数
- 0.认为编程不是一种谋生手段,而是一种发自内心的热爱。
- 袁芳的学习笔记(1)Predix配置开发环境
- poj1845——Sumdiv(数论+幂的因子和)
- 4.java 泛型的目标类型推断
- 2.3 流程和函数
- 用Shell根据AcessLog统计对应的点击量
- 每个人都应该学习一门编程语言
- ListView多布局展示
- 微擎图片上传组件
- jira插件破解步骤
- 十三种基于直方图的图像全局二值化算法原理、实现、代码及效果。
- iOS开发之将字典NSDictionary转化为NSData数据
- Service
- 键盘输入字符数