流量日志统计案例

文件内容:         
1363157985066   【时间戳】  
13726230503  【手机号,有相同的】 第二个
 00-FD-07-A4-72-B8:CMCC【运营商】
 120.196.100.82 【IP】
  i02.c.aliimg.com 【网址,有的没有这项】 
   视频网站【网站类别,有的没有】
  24 【上传数据包个数】
  27 【下载数据包个数】
  2481 【上行流量费】 倒数第三个
  24681  【下行流量】  倒数第二个
 200 【状态码】

分析:
map端做什么?
1获取数据
2切割数据--要三个字段【手机号 上行流量 下行流量】
3context(手机号,flowBean(封装 上行流量 下行流量 自动流量))
问题:自己定义的对象要进行网络传输---要进行序列化
【自定义bean对象实现序列化接口Writable】
自定义bean对象要想序列化传输,必须实现序列化接口,需要注意以下7项
【1】必须实现Writable接口
【2】反序列化时,需要反射调用空构造函数,所以必须有空参构造
public FlowBean()
{
super();
}
【3】重写序列化方法
public void write(DataOutput out)//通过输出流把属性序列化
{
out.writeLong(upFlow);
out.writeLong(downFlow);
out.writeLong(sumFlow);
}

【4】重写反序列化方法
public void readFields(DataInput in)//通过输入流反序列化出属性
{
upFlow=in.readLong();
downFlow=in.readLong();
sumFlow=in.readLong();
}
【5】注意反序列化的顺序和序列化的顺序要完全一致
【6】要想把结果显示在文件中,需要重写toString(),可用"\t"隔开,方便后续使用
【7】如果需要将自定义的bean放在key中传输,则还需要实现comparable接口。
因为mapreduce框架中的shuffle过程一定会对key进行排序
public int comapreTo(FlowBean o)
{
//倒序排序,从小到大
return this.sumFlow>o.getSumFlow() ? -1 : 1;
}

OutputFormat数据输出
OutputFormat接口实现类
OutputFormat是MapReduce输出的基类,所有实现MapReduce输出都实现了OutputFormat
接口,几种常见的OutputFormat
【1】文本输出TextOutputFormat
默认的输出格式是TextOutputFormat,它把每条记录写为文本行,它的键和值可以是任意类型,
因为TextOutputFormat调用toString()方法把它们转换为字符串。
【2】自定义OutputFormat
为了实现控制最终文件的输出路径,可以自定义OutputFormat
要在一个mapreduce程序中根据数据的不同,输出两类结果到不同目录,之类灵活的输出需求可以
通过自定义outpoutformat来实现
1自定义OutputFormat步骤
(1)自定义一个类继承FileOutputFormat
(2)改写recordwriter,具体改写输出数据的方法write()


分析数据:
1363157985066    13726230503    00-FD-07-A4-72-B8:CMCC    120.196.100.82    i02.c.aliimg.com    24    27    2481    24681    200
1363157995052   13826544101    5C-0E-8B-C7-F1-E0:CMCC    120.197.40.4    4    0    264    0    200
1363157991076   13926435656    20-10-7A-28-CC-0A:CMCC    120.196.100.99    2    4    132    1512    200
1363154400022   13926251106    5C-0E-8B-8B-B1-50:CMCC    120.197.40.4    4    0    240    0    200
1363157993044   18211575961    94-71-AC-CD-E6-18:CMCC-EASY    120.196.100.99    iface.qiyi.com    视频网站    15    12    1527    2106    200
1363157995074   84138413    5C-0E-8B-8C-E8-20:7DaysInn    120.197.40.4    122.72.52.12    20    16    4116    1432    200
1363157993055   13560439658    C4-17-FE-BA-DE-D9:CMCC    120.196.100.99    18    15    1116    954    200
1363157995033   15920133257    5C-0E-8B-C7-BA-20:CMCC    120.197.40.4    sug.so.360.cn    信息安全    20    20    3156    2936    200
1363157983019   13719199419    68-A1-B7-03-07-B1:CMCC-EASY    120.196.100.82    4    0    240    0    200
1363157984041   13660577991    5C-0E-8B-92-5C-20:CMCC-EASY    120.197.40.4    s19.cnzz.com    站点统计    24    9    6960    690    200
1363157973098   15013685858    5C-0E-8B-C7-F7-90:CMCC    120.197.40.4    rank.ie.sogou.com    搜索引擎    28    27    3659    3538    200
1363157986029   15989002119    E8-99-C4-4E-93-E0:CMCC-EASY    120.196.100.99    www.umeng.com    站点统计    3    3    1938    180    200
1363157992093   13560439658    C4-17-FE-BA-DE-D9:CMCC    120.196.100.99    15    9    918    4938    200
1363157986041   13480253104    5C-0E-8B-C7-FC-80:CMCC-EASY

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值