浏览 1922 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-07
最后修改:2009-06-07
/** * URL访问频率统计 * map函数 处理webpag请求和应答(URL,1)的log。 * Reduce函数 把所有相同的URL的值合并,并且输出一个成对的(URL,总个数)。 * 参考:http://labs.google.com/papers/mapreduce.html */ var mapReduceJob = { map:function(/*Array*/lines){ var map_result = []; lines.each(function(line){ var url = line.match(/GET \S+.html HTTP/);//仅简单匹配html类型链接 if(url)){ map_result.push([url[0],1]); } }); return map_result; }, reduce:function(/*Array*/map_result){ var reduce_result={}; map_result.each(function(/*Array*/pair){ reduce_result[pair[0]] ||= 0; reduce_result[pair[0]] += pair[1]; }); return reduce_result; }, run:function(){ var xhr = new XMLHTTPRequest(); var me = this; xhr.onreadystatechange = function(){ if (xhr.readyState == 4){ var data = xhr.responseText.split("\n"); var map_result = me.map(data); var reduce_result = me.reduce(map_result); console.log(reduce_result ); } } xhr.Open("get", "http://test.com/log/log-2009-6-7.log", true); xhr.send(null); } }; mapReduceJob.run(); 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-06-07
高手,写的都是伪码啊,呵呵
reduce_result[1] ||=0 这个是语法错误呢。 开始我还已为真能这么写,上当了。 |
|
返回顶楼 | |
发表时间:2009-06-08
jindw 写道 高手,写的都是伪码啊,呵呵
reduce_result[1] ||=0 这个是语法错误呢。 开始我还已为真能这么写,上当了。 reduce_result[pair[0]] = reduce_result[pair[0]] || 0; 谢谢指正 确实是伪码,数组的each方法需要自己实现。 |
|
返回顶楼 | |