MongoDB--MapReduce分布统计s

MapReduce

Mapreduce:要操作的目标集合

Map:映射函数(生成键值对序列,作为reduce函数参数) //传入分组的key和需要统计的值

Reduce:统计函数 //格式化返回的参数对象

Query:目标记录过滤 //在mp之前对查询过滤条件

Sort:目标记录排序

Limit:限制目标记录数量

Out:统计结果存放集合(不指定使用临时集合,在客户端断开后自动删除)// 将结果输出到某张表内

Keeptemp:是否保留临时集合

Finalize:最终处理函数(对reduce返回结果进行最终整理后存入结果集合) //对结果进行处理

Scope:向map、reduce、finalize导入外部变量

Verbose:显示详细的时间统计信息。

数据结构

db.runCommand({
		mapreduce:"students",
		map:function(){
			emit(this.classid,this.name);
		},
		reduce:function(key,values){
			var res={classid:key,names:values}
			return res;
		},
		query:{"age":{"$gt":10}},
		finalize:function(key,reducevalues){
			var obj={};
			obj.keyname=key;
			obj.values=reducevalues.names;
			return obj;
		},
		out:"test_mp2"
	})
db.runCommand({
		mapreduce:"students",
		map:function(){
			emit(this.classid,this.name);
		},
		reduce:function(key,values){
			return values.length;
		},
		query:{"age":{"$gt":10}},
		out:"test_mp2"
	})

针对第二个统计步骤为:

时间: 2024-09-28 12:37:21

MongoDB--MapReduce分布统计s的相关文章

(16)mongodb mapReduce分布式统计示例遇到的一个未解问题,求平均值不对,希望哪位大神给指点一下

mapReduce 的优势在于分布式,这一节记录一个分布式统计的示例,整个过程分为这几步:启动分布式服务.手动分片.导入数据.执行 mapReduce.下面单独说说这几步. 1.启动分布式服务 参考前面的第10节和第11节,不在重复说了. 2.手动分片: sh.enableSharding('test'); 用test库做分片 sh.shardCollection('test.dz',{sn:1}); 指定片键,test库的dz集合,sn为片键 mongos> for(var i=1;i<=8

mongodb mapreduce使用总结

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

MapReduce 单词统计案例编程

MapReduce 单词统计案例编程 一.在Linux环境安装Eclipse软件 1.   解压tar包 下载安装包eclipse-jee-kepler-SR1-linux-gtk-x86_64.tar.gz到/opt/software目录下. 解压到/opt/tools目录下: [[email protected] tools]$ tar -zxf /opt/sofeware/eclipse-jee-kepler-SR1-linux-gtk-x86_64.tar.gz -C /opt/tool

mongodb mapreduce用法

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

软考信息安全工程师考试真题汇总及试题分布统计

软考信息安全工程师考试真题汇总及试题分布统计 https://www.moondream.cn/?p=274 2017年信息安全工程师真题 链接:https://pan.baidu.com/s/1iGLowkGPL6HOLKgiN4LEWg    密码:请进入备考群获取 2016年信息安全工程师真题 链接:https://pan.baidu.com/s/1c5E9EdI1TIzawK1Bm-TMEQ       密码:请进入备考群获取 2016年下半年信息安全工程师考试真题含答案(上午题) 20

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 实战&lt;1&gt;

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

如何在Mongodb集合中统计去重之后的数据

比方说我们有个Mongodb集合, 以这个简单的集合为例,我们需要集合中包含多少不同的手机号码,首先想到的应该就是使用distinct关键字, db.tokencaller.distinct('Caller').length 如果想查看具体的而不同的手机号码,那么可以省略后面的length属性,因为db.tokencaller.distinct('Caller')返回的是由所有去重手机号码组成的数组. 但是,这种方式对于所有情况都是满足的嘛?并不如此,如果要统计的集合记录数较大,如千万级别的,那

第二部分 应用篇 第七章 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的