• 青海“天然林管护+生态扶贫” 5517万亩天然林得到保护 2019-08-17
  • 消除“毒跑道”,关键在标准 2019-08-17
  • 朝韩首脑共同检阅韩国三军仪仗队 2019-08-12
  • 新时代建筑的审美需要 2019-08-11
  • 贸易战,只能是双输。我们是众志成城,美国却不一定。 2019-08-11
  • 扎进深山扶贫 暖了百姓心——省个私企业党委直属企业党组织“精准扶贫丰宁行”活动侧记 2019-08-10
  • 5月份61城房价环比反弹 多地调控政策或再加码 ——凤凰网房产济南 2019-08-06
  • 时隔12载杀回决赛圈 “沙漠之狐”力争不做背景帝 2019-08-06
  • 证监会通报4宗新三板案件 数量接近2017年全年水平 2019-08-05
  • 滴滴计划恢复部分夜间时段订单  2019-07-29
  • 南非发布限量版消防主题邮票 2019-07-29
  • 北京师范大学心理学部许燕教授作“领导干部心理调适”专题报告 2019-07-25
  • 高考评卷在三所高校进行 确保高质高效完成评卷任务 2019-07-25
  • 「社会人」小猪佩奇过气了,但年轻人还爱着它 2019-07-24
  • 粽情粽意 传承文明———我们的节日2018端午节 2019-07-24
  •    
     
    [返回]  
      [数据统计方法]
        作者:赵英明
     
    [正文]
      HI,大家好:
      最近在工作中发现一个普遍问题,在统计数据时,同样类型的数据,由于参数的不同,多次扫描原始日志文件。当日志文件很大时,这种统计方式效率非常的低,借此机会和大家共同探讨一下统计效率的问题。
      基本思想是做预处理,将日志的原始数据倒入到内存中,然后基于内存统计数据。
      这里需要用到AWK脚本,具体AWK的使用可以查看相关的资料说明。
      下面我给大家一个实际的例子来展现一下。
      需求如下:
      统计每款手机每个产品的转定率,顺便统计每个产品的总转定率和每款产品的总转定率。
      原始数据如下:
    3个WAP网关上的3个定制日志和一个WAP策略访问日志。
    定制日志:包含用户手机号码,用户MID,产品ID,动作(定制,退定,。。。)等。
    访问日志:包含用户手机号码,用户MID,产品ID,产品型号等
    转定率:用户定制/用户访问
    下面是具体的temp.awk脚本内容,我在此加了些注释,
    {
    if(index($0,"action:1")>0){???????????? #判断扫描到网关文件,且是定制记录su
    sid=substr($9,2,length($9)-2);
    mid=substr($7,2,length($7)-2);
    mobile=substr($8,2,length($8)-2);?????? #得到产品ID,MID,手机号码
    }
    else if(index($0,"spURL")>0){?????????? #判断扫描到的是访问日志
    split($2,aa,"|");
    split(aa[12],cc," ");
    split(cc[1],dd,"/");
    split(dd[1],cc,"*");
    ua=cc[1];
    sid=substr(aa[2],5);
    mo=substr(aa[3],8);
    mid=substr(aa[4],5);??????????????????? #获得产品ID,UA,MID,号码
    x=0;if(index(mo,"_no_mobile_")>=0) x=1; #特殊处理,标记没有手机号码的情况
    y=0;if(index(mid,"_no_mid_")>=0) y=1;?? #特殊处理,标记没有手机号码的情况
    if((x==0)&&(sid" "mo) in MO2)) || (Y==0)&&((sid" "mid) in MID2))){
    #用MO2,MID2数组来分别记录处理过的用户
    #已处理过的用户不再处理
    }
    else if(x*y==0){ #至少有手机号码或者MID,否则无法标识用户? #,不处理。
    AA[ua" "sid]++; #对应的“手机号码和ID” 定制数加1
    if((x==0)&&((sid" "mid) in MID)) ||((y==0) && ((sid" "mo) in MO)){
    #对应的“用户和产品ID” 在网关日志中有定????????????????????????????????????????? #制记录
    BB[ua" "sid]++;???????????????????????? #对应的“手机号码和ID” 定制数加1
    }
    MID2[sid" "mid]=1;????????????????????? #记录已经处理过的用户MID和产品ID对
    MO2[sid" "mo]=1;??????????????????????? #记录已经处理过的用户号码和产品ID对
    }
    }
    END
    {
    for(a in AA){?????????????????????????? #输出结果文件
    if(!(a in BB)) BB[a]=0;
    print a" "BB[a]" "AA[a];??????????????? #输出格式为“手机型号 产品ID 定制次数 访????????????????????????????????????????? #问次数”
    }
    }
    有了上面的结果,再计算转定率就太简单了,
    需要说明的是,网关文件必须先扫描,这样MID,MO数组才有值。
      执行命令应该是这样的:
    cat 网关文件1 网关文件2 网关文件3 访问日志 | awk -f temp.awk > result.txt

      此shell实际执行效率是:网关800M数据,访问1200M数据,4分钟统计完毕。

    版权所有:金桥教育 网址:森林狼vs国王04年视频 www.zborg.net 咨询QQ:498912824
    学校地址:长春市同志街桂林路中岚写字楼8楼(桂林路恒客隆同楼右侧) 咨询电话:0431-85679386 85650781
    乘车路线:乘362 62路车<桂林路>站 下车
    短信:发送“java”到916068
  • 青海“天然林管护+生态扶贫” 5517万亩天然林得到保护 2019-08-17
  • 消除“毒跑道”,关键在标准 2019-08-17
  • 朝韩首脑共同检阅韩国三军仪仗队 2019-08-12
  • 新时代建筑的审美需要 2019-08-11
  • 贸易战,只能是双输。我们是众志成城,美国却不一定。 2019-08-11
  • 扎进深山扶贫 暖了百姓心——省个私企业党委直属企业党组织“精准扶贫丰宁行”活动侧记 2019-08-10
  • 5月份61城房价环比反弹 多地调控政策或再加码 ——凤凰网房产济南 2019-08-06
  • 时隔12载杀回决赛圈 “沙漠之狐”力争不做背景帝 2019-08-06
  • 证监会通报4宗新三板案件 数量接近2017年全年水平 2019-08-05
  • 滴滴计划恢复部分夜间时段订单  2019-07-29
  • 南非发布限量版消防主题邮票 2019-07-29
  • 北京师范大学心理学部许燕教授作“领导干部心理调适”专题报告 2019-07-25
  • 高考评卷在三所高校进行 确保高质高效完成评卷任务 2019-07-25
  • 「社会人」小猪佩奇过气了,但年轻人还爱着它 2019-07-24
  • 粽情粽意 传承文明———我们的节日2018端午节 2019-07-24
  • 北京十一选五开奖走势图 2014新时时加奖 1000炮金蟾捕鱼技术 快速赛技巧 上海时时乐基本走势图2元网 安徽时时走势图官方 北京pk10计划方法论坛 安徽时时快3玩法 今晚深圳风采最新开奖结果 七星彩开奖近200期 注册赠分的捕鱼平台24小时在线 极速时时计划13458 欧洲快乐赛车开奖结果 英国时时彩开奖记录 新疆时时走势直播 棋牌代理分成