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;
            }";

 

相关文章:

  • 2021-10-07
  • 2021-08-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-05
  • 2022-01-15
  • 2021-11-25
猜你喜欢
  • 2022-01-12
  • 2021-10-11
  • 2021-12-12
  • 2022-01-03
  • 2021-05-16
  • 2021-12-23
相关资源
相似解决方案