時間:2024-03-08 08:50作者:下載吧人氣:17
前言
玩過Hadoop的小伙伴對MapReduce應該不陌生,MapReduce的強大且靈活,它可以將一個大問題拆分為多個小問題,將各個小問題發送到不同的機器上去處理,所有的機器都完成計算后,再將計算結果合并為一個完整的解決方案,這就是所謂的分布式計算。本文我們就來看看MongoDB中MapReduce的使用。
打算用mongodb mapreduce之前一定要知道的事!!!
mapreduce其實是分批處理數據的,每一百次重新reduce處理,所以到reduce里的數據如果是101條,那就會分2次進入。
這導致的問題就是在reduce中 如果 初始化 var count = 0;
在循環中 count ++,最后輸出的是1???
避免都方法是,把數據存在返回的value里,這個value是會在循環進入reduce的時候重用的。在循環中 count += value.count
就能把之前都100加上了!!!
還有如果只有一條數據,那它不會進入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; }";
網友評論