立即注册 登录
About云-梭伦科技 返回首页

pig2的个人空间 https://www.aboutyun.com/?61 [收藏] [复制] [分享] [RSS]

日志

mapreduce分析日志所隐藏的规律

已有 628 次阅读2014-8-3 14:39

我们写mapreduce的过程中,会不会产生这些疑问。比如:
我们在MapReduce初级案例(3):使用MapReduce实现平均成绩,我们会特意,换行,让mapreduce能够识别。


  1)math:
  1. 张三    88

  2. 李四    99

  3. 王五    66

  4. 赵六    77
复制代码

2)chinese :
  1. 张三    78

  2. 李四    89

  3. 王五    96

  4. 赵六    67
复制代码
那么为什么需要换行。因为mapreduce默认是以行为处理单位。
那么假如我们的日志或则待处理的文件,不是以行为单位,那么会产生什么问题。


183.131.11.98 - - [01/Aug/2014:01:01:05 +0800] "GET /thread-5981-1-1.html HTTP/1.1" 200 18152 "http://www.baidu.com/s?wd=cocos2dx%203.2%20wp8%E6%94%AF%E6%8C%81&pn=30&oq=cocos2dx%203.2%20wp8%E6%94%AF%E6%8C%81&tn=28035039_2_pg&ie=utf-8&rsv_page=1" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 UBrowser/1.0.349.1252 Safari/537.36"
183.131.11.98 - - [01/Aug/2014:01:01:06 +0800] "GET /data/cache/style_1_common.css?A4A HTTP/1.1" 200 15402 "http://www.aboutyun.com/thread-5981-1-1.html" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 UBrowser/1.0.349.1252 Safari/537.36"
183.131.11.98 - - [01/Aug/2014:01:01:06 +0800] "GET /data/cache/style_1_forum_viewthread.css?A4A HTTP/1.1"
 


像上面日志,我们能否处理,答案是不可以的。

原因:
因为mapreduce中map函数所接受的参数,是其中的一行,这一行是哪里来的,是由mapreduce框架来处理的。这是很多迷惑的地方。

总结:
对于日志记录如果不是以行数来记录一条数据的话,那么mapreduce就不能处理。
而这里的一条记录的定义包含如下信息:
183.131.11.98 - - [01/Aug/2014:01:01:05 +0800] "GET /thread-5981-1-1.html HTTP/1.1" 200 18152 "http://www.baidu.com/s?wd=cocos2dx%203.2%20wp8%E6%94%AF%E6%8C%81&pn=30&oq=cocos2dx%203.2%20wp8%E6%94%AF%E6%8C%81&tn=28035039_2_pg&ie=utf-8&rsv_page=1" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 UBrowser/1.0.349.1252 Safari/537.36"



也就是说,在一行中如果日志记录了两条数据,那么map就会收到两条记录,但是我们在处理的过程中,都是按照一条来处理的,所以就会产生错误。



 


我们在看上面日志
上面的日志可以的,为什么。因为这里的一条记录放在了一行。
可是你会反驳说,这明明是三行,这有点像咱们的文本框,如果你去掉换行,那么这条信息:
183.131.11.98 - - [01/Aug/2014:01:01:05 +0800] "GET /thread-5981-1-1.html HTTP/1.1" 200 18152 "http://www.baidu.com/s?wd=cocos2dx%203.2%20wp8%E6%94%AF%E6%8C%81&pn=30&oq=cocos2dx%203.2%20wp8%E6%94%AF%E6%8C%81&tn=28035039_2_pg&ie=utf-8&rsv_page=1" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 UBrowser/1.0.349.1252 Safari/537.36"
如上,则是直接显示在一行。


现在留下一个问题?
对于一条记录放在了两行或则多行,mapreduce能否处理?怎么样mapreduce才能处理。
进一步:
Apache日志所有的一条记录是否都放在一行?

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条