文档章节

MapReduce函数的JavaScript模拟实现

吐槽的达达仔
 吐槽的达达仔
发布于 2014/12/05 22:17
字数 416
阅读 10
收藏 0

转载自 D瓜哥
对于像我一样的菜鸟理解MapReduce模型非常有用。
上代码~~!

 

<html>
<head>
<title>MapReduce JS test</title>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

</head>

<body>
<script>
var Job = { 
//待处理的数据 
data : [ 
"We are glad to see you here. This site is dedicated to", 
"poetry and to the people who make poetry possible", 
"poets and their readers. FamousPoetsAndPoems.com is", 
"a free poetry site. On our site you can find a large", 
"collection of poems and quotes from over 631 poets", 
"Read and Enjoy Poetry", 
"I, too, sing America", 
"I am the darker brother", 
"They send me to eat in the kitchen", 
"When company comes", 
"But I laugh", 
"And eat well", 
"And grow strong", 
"Tomorrow", 
"Ill be at the table", 
"When company comes", 
"Nobodyll dare", 
"Say to me", 
"Eat in the kitchen", 
"Then", 
"Besides", 
"Theyll see how beautiful I am", 
"And be ashamed", 
"I, too, am America" 
], 
//将数据中的每行字符串用空格分隔开, 
//map函数用于拆分数据
//并"重组"成诸如{key: 单词, value: 1}格式的对象,返回对象数组 
map : function(line) { 
var splits = line.split(" "); 
var temp = []; 
for(var i=0; i<splits.length; i++) { 
temp.push({key : splits[i], value : 1}); 
} 
return temp; 
}, 
//计算每个单词在"数据"(data)中出现的次数 
//reduce函数用于聚合归并数据
reduce : function(allSteps) { 
var result = {}; 
for(var i=0; i<allSteps.length; i++) { 
var step = allSteps[i]; 
result[step.key] = result[step.key] ? (result[step.key] + 1) : 1; 
} 
return result; 
}, 
//初始化,同时是运行的入口。 
init : function() { 
var allSteps = []; 
for(var i=0; i<Job.data.length; i++) { 
//如果这里能多线程调用Job.map函数就更逼真了。?? 
//用循环代替多线程并发,对每一“行”数据进行拆分
allSteps = allSteps.concat(Job.map(Job.data[i])); 
} 
//美中不足,这里不能多线程调用Job.reduce函数?? 
var result = Job.reduce(allSteps) 
console.log(JSON.stringify(result)); 
} 
}; // Job 
//开始执行 
Job.init(); 

</script>
	
hadoop MapReduce test

</body>
</html>

 

 

请在Firefox里面运行以上代码

 

本文转载自:http://dacoolbaby.iteye.com/blog/1736805

下一篇: datav.js
吐槽的达达仔
粉丝 28
博文 104
码字总数 7105
作品 0
广州
程序员
私信 提问
在MongoDB中使用MapReduce

MapReduce是聚合工具的明星。Count、distinct、group能做的上述事情,MapReduce都能做。它是一个能轻松并行化到多个服务器的聚合方法。它会拆分问题,再将各个部分发送到不同的机器上,让每台...

浙大高分网格
2014/03/04
267
0
MongoDB:拥有 RDBMS 特性的 NoSQL 数据存储

如果您正在探索 NoSQL 数据库的世界,则 MongoDB(有时被誉为 NoSQL RDBMS)应在您的清单上获得一个位置。了解所有有关 MongoDB 的自定义 API、交互式 shell、RDBMS 类型动态查询的支持、以及...

红薯
2010/12/14
1K
4
MongoDB Map Reduce

【mongoDB高级篇②】大数据聚集运算之mapReduce(映射化简) Map-Reduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。 MongoD...

mickelfeng
2017/11/17
14
0
8月,推荐给程序员们的书

八月,好书来袭,在Swift刚刚发布不久之后,即将出版《Swift权威指南》一书,预计8月下旬上市,敬请关注,据说是国内第一本含金量超过Swift官方文档的原创图书,到时等你们来评分。 本期特别...

生气的散人
2014/08/07
3.4K
0
spring mongodb MapReduce添加scope,scope属性为函数时无法执行.

直接上mongodb脚本(隐藏部分业务代码,保留脚本结构) 问题描述 想通过mongodb提供的MapReduce来进行数据分析,然后动态写入Collection中.以上代码脚本可以直接运行在mongodb中,但当我想用sprin...

wonailmy
08/06
55
0

没有更多内容

加载失败,请刷新页面

加载更多

Android面试常客之Handler全解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/fnhfire_7030/article/details/79518819 前言:又到了一年...

shzwork
9分钟前
1
0
position sticky 定位

本文转载于:专业的前端网站➫position sticky 定位 1、兼容性 https://caniuse.com/#search=sticky chrome、ios和firefox兼容性良好。 2、使用场景 sticky:粘性。粘性布局。 在屏幕范围内时...

前端老手
16分钟前
1
0
CentOS 7 yum 安装 PHP7.3 教程

参考:https://www.mf8.biz/centos-rhel-install-php7-3/ 1、首先安装 EPEL 源: yum install epel-release 安装 REMI 源: yum install http://rpms.remirepo.net/enterprise/remi-release......

dragon_tech
31分钟前
1
0
Linux物理网卡聚合及桥接

Linux内部实现的bridge可以把一台机器上的多张网卡桥接起来,从而把自己作为一台交换机。同时,LInux bridge还支持虚拟端口,即桥接的不一定都是物理网卡接口,还可以是虚拟接口。目前主要表...

xiangyunyan
31分钟前
1
0
一起来学Java8(一)——函数式编程

在这篇文章中,我们将了解到在Java8下如何进行函数式编程。 函数式编程 所谓的函数式编程就是把函数名字当做值进行传递,然后接收方拿到这个函数名进行调用。 首先来看下JavaScript如何进行函...

猿敲月下码
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部