复杂mapreduce程序 分析http服务器数据

ghwolf_q 2016-03-22 04:51:38
本人刚学习,这是开发的第一个复杂一点的程序。既当作自己的个人笔记,也算是分享一下。
数据类型
199.72.81.55 - - [01/Jul/1995:00:00:01 -0400] "GET /history/apollo/ HTTP/1.0" 200 6245
ip 时间 访问 状态码 大小
首先我自定义一个数据类型LogWritable,里面包含userIP, timestamp, request,status,responseSize。
定义一个LogFileInputFormat,作为数据进入map函数的处理,重写createRecordReader()和getSplits()方法,实现一个LogRecordReader类,用正则表达式分析数据"^(\\S+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3}) (\\d+)"取出ip和大小,
String userIP = matcher.group(1);
String timestamp = matcher.group(4);
String request = matcher.group(5);
int status = Integer.parseInt(matcher.group(6));
int bytes = Integer.parseInt(matcher.group(7));
map类将ip和大小输出context.write(value.getUserIP(),value.getResponseSize());
IPBasedPartitioner通过模运算类把同一个ip的负责发送到一个reduce类里面token.hashCode() & Integer.MAX_VALUE) % numPartitions
reduce类负责把大小加起来就可以了
for (IntWritable val : values) {
sum += val.get();
}
输出就可以了

新人学习 求大神带我飞
...全文
506 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghwolf_q 2018-08-28
  • 打赏
  • 举报
回复
引用 4 楼 SuperDBG1 的回复:
看不到资源包呀
很早前的东西了
SuperDBG1 2018-07-19
  • 打赏
  • 举报
回复
看不到资源包呀
alinly 2016-03-25
  • 打赏
  • 举报
回复
不错啊, 运行,运行.
superchar 2016-03-25
  • 打赏
  • 举报
回复
夜无边CN 2016-03-25
  • 打赏
  • 举报
回复
接分 。

20,808

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧