時間:2024-03-08 08:50作者:下載吧人氣:18
前言
玩過Hadoop的小伙伴對MapReduce應(yīng)該不陌生,MapReduce的強(qiáng)大且靈活,它可以將一個大問題拆分為多個小問題,將各個小問題發(fā)送到不同的機(jī)器上去處理,所有的機(jī)器都完成計算后,再將計算結(jié)果合并為一個完整的解決方案,這就是所謂的分布式計算。本文我們就來看看MongoDB中MapReduce的使用。
打算用mongodb mapreduce之前一定要知道的事!!!
mapreduce其實是分批處理數(shù)據(jù)的,每一百次重新reduce處理,所以到reduce里的數(shù)據(jù)如果是101條,那就會分2次進(jìn)入。
這導(dǎo)致的問題就是在reduce中 如果 初始化 var count = 0;
在循環(huán)中 count ++,最后輸出的是1???
避免都方法是,把數(shù)據(jù)存在返回的value里,這個value是會在循環(huán)進(jìn)入reduce的時候重用的。在循環(huán)中 count += value.count
就能把之前都100加上了!!!
還有如果只有一條數(shù)據(jù),那它不會進(jìn)入reduce,會直接返回。
下面是具體例子:
string map = @" function() { var view = this; emit(view.activity, {pv: 1}); }"; string reduce = @" function(key, values) { var result = {pv: 0}; values.forEach(function(value){ result.pv += value.pv; }); return result; }"; string finalize = @" function(key, value){ return value; }";
網(wǎng)友評論