打算用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;
            }";
时间: 2024-11-06 19:36:14

打算用mongodb mapreduce之前一定要知道的事!!!的相关文章

mongodb mapreduce用法

mongoDB的MapReduce简介 分类:            MongoDB2012-12-06 21:378676人阅读评论(2)收藏举报 MongoDB MapReduce MapReduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE).这样做的好处是可以在任务被分解后,可以通过大量机器进行并行计算,减少整个操作的时间. 上面是MapReduce的理论部分,下面说实际的应用,下面以MongoDB MapReduce为

mongodb mapreduce使用总结

文章来自本人个人博客: mongodb mapreduce使用总结 ? 大家都知道,mongodb是一个非关系型数据库,也就是说,mongodb数据库中的每张表是独立存在的,表与表之间没有任何依赖关系.在mongodb中,除了各种CRUD语句之外,还给我们提供了聚合和mapreduce统计的功能,这篇文章主要来跟大家聊聊mongodb的mapreduce的操作. ?mapreduce的概念我就不赘述了,大家自己去查查吧. ?在mongodb中,mapreduce的语法如下: ? db.table

(转)关于MongoDB你需要知道的几件事

本文列举了颇让作者困惑的一些MongoDB限制,如果你也打算使用MongoDB,那么至少要提前了解这些限制,以免遇到的时候措手不及. 消耗磁盘空间 这是我的第一个困惑:MongoDB会消耗太多的磁盘空间了.当然了,这与它的编码方式有关,因为MongoDB会通过预分配大文件空间来避免磁盘碎片问题.它的工作方式是这样的:在创建数据库时,系统会创建一个名为[db name].0的文件,当该文件有一半以上被使用时,系统会再次创建一个名为[db name].1的文件,该文件的大小是方才的两倍.这个情况会持

MongoDB MapReduce学习笔记

MapReduce应该算是MongoDB操作中比较复杂的了,自己开始理解的时候还是动了动脑子的,所以记录在此! 命令语法:详细看 db.runCommand( { mapreduce : 字符串,集合名, map : 函数,见下文 reduce : 函数,见下文 [, query : 文档,发往map函数前先给过渡文档] [, sort : 文档,发往map函数前先给文档排序] [, limit : 整数,发往map函数的文档数量上限] [, out : 字符串,统计结果保存的集合] [, ke

MongoDB:MapReduce基础及实例

背景 MapReduce是个非常灵活和强大的数据聚合工具.它的好处是可以把一个聚合任务分解为多个小的任务,分配到多服务器上并行处理. MongoDB也提供了MapReduce,当然查询语肯定是JavaScript.MongoDB中的MapReduce主要有以下几阶段: 1. Map:把一个操作Map到集合中的每一个文档 2. Shuffle: 根据Key分组对文档,并且为每个不同的Key生成一系列(>=1个)的值表(List of values). 3. Reduce: 处理值表中的元素,直到值

MongoDB MapReduce 实战<1>

需求,Mysql表中某日志表,要求统计数据的平均记录周期,在实践中学习,用Mysql可能比较麻烦,那就用用刚接触的MongoDB吧,也能跟去年研究的Hadoop沾点边,况且MongoDB支持MapReduce,去年一直想深入了解,但是太忙,没时间,正好现在研究看看. 使用命令行实在累人,所以使用了MongoVUE,这个工具. 开工了: 分析表结构,有用的字段一个是记录ID(可重复),一个是记录产生的时间: 将需要的字段和数据导入到MongoDB中: 编写第一个MapReduce,将记录产生的时间

第二部分 应用篇 第七章 MongoDB MapReduce

1.简介 MongoDB的MapReduce相当于MySQL中的group by,所以在MongoDB上使用Map/Reduce进行统计很容易,使用MapReduce要实现两个函数Map函数和Reduce函数,Map函数调用emit(key,value),遍历collection中所有的记录,将key与value传递给Reduce函数进行处理,Map函数和Reduce函数可以使用JavaScript来实现,可以通过db.runCommand或者mapReduce命令来执行一个MapReduce的

mongoDB MapReduce

MapReduce功能强大,分两步操作. Map:将数据分别取出. Reduce:负责数据的最后的处理. 使用MapReduce操作最终会将处理结果保存在一个单独的集合里面,而最终的处理效果如下. 范例:统计出各性别的人数.平均工资.最低工资.雇员姓名 总结: 理解MapReduce思路. Map函数:emit("分组",{"$sum":"$column","$count_1":"$column_2"});

(15)mongodb mapReduce的概念及用法

mapReduce从功能上说类似于RDBMS中的group,它的强大之处在于很好的支持分布式.相比于group.aggregate,mapReduce的用法很简单,其实它的工作原理也很简单,下面介绍一下. mapReduce工作分为两步,一是映射,即map,将数据按照某一个规则映射到一个数组里,比如按照type或者name映射,同一个type或者name的数据形成一个数组,二是规约,即reduce,它接收映射规则和数组,然后计算.举例如下: 1.计算每个栏目的库存总量 var map=funct