b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

mapreduce原理 JavaScript mapreduce工作原理简析(2)

电脑杂谈  发布时间:2017-01-31 18:30:17  来源:网络整理

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 : 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;

},

//初始化,同时是运行的入口。mapreduce原理mapreduce原理

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();

复制这些代码,直接粘贴到浏览器的控制台(Console)中,或者放到一个HTML文件中,用浏览器打开,就可以在控制台输出中,看到效果如下:

美中不足

这篇文章发布出来之后,就有网友“咆哮”:“一个连多线程都没有的js 搞什么MapReduce啊?”其实,这个问题,D瓜哥也发现了。在看到这个代码的解释后,D瓜哥就纳闷JavaScript不是单进程吗?怎么还能模拟MapReduce?在认真阅读代码,单步调试之后,更加印证了D瓜哥的看法。(关于D瓜哥的疑问已经在代码中注释出来。)

不过,再想一下,这些并不影响我们去理解MapReduce的原理。这只是个单进程,最基础的版本。先理解了这个,再去整个多线程的也许就更容易理解了。

未完待续

其实,D瓜哥现在考虑在这个例子的基础上,用Java实现一个多线程版本,那样模拟的MapReduce更逼真。等D瓜哥把一些问题思考清楚之后,就把代码发出来。敬请期待!


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-29760-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 蔡亚飞
      蔡亚飞

      你是美国佬的私生子吗

    热点图片
    拼命载入中...