mapreduce运用
测试环境:192.168.1.55
mongo 192.168.1.55:30001
show dbs
use gwgps
测试目标,求出两个班的总数,人数,平均分数等。
可以根据不同的业务需求,定制map,reduce,finalize函数。
1. 数据准备
db.person1.insert({'class':1,'name':'n1',age:5,score:90,nation:'汉'})
db.person1.insert({'class':1,'name':'n2',age:6,score:92,nation:'汉'})
db.person1.insert({'class':1,'name':'n3',age:5,score:92,nation:'苗'})
db.person1.insert({'class':1,'name':'n4',age:8,score:96,nation:'藏'})
db.person1.insert({'class':1,'name':'n5',age:8,score:98,nation:'汉'})
db.person1.insert({'class':1,'name':'n6',age:9,score:98,nation:'汉'})
db.person1.insert({'class':1,'name':'n7',age:4,score:91,nation:'藏'})
db.person1.insert({'class':1,'name':'n8',age:8,score:96,nation:'苗'})
db.person1.insert({'class':2,'name':'n9',age:9,score:95,nation:'苗'})
db.person1.insert({'class':2,'name':'n10',age:9,score:96,nation:'藏'})
db.person1.insert({'class':2,'name':'n11',age:9,score:92,nation:'苗'})
db.person1.insert({'class':2,'name':'n12',age:8,score:91,nation:'汉'})
db.person1.insert({'class':2,'name':'n13',age:7,score:99,nation:'汉'})
db.person1.insert({'class':2,'name':'n14',age:7,score:98,nation:'汉'})
db.person1.insert({'class':2,'name':'n15',age:2,score:99,nation:'内蒙'})
2.编写map函数
map=function(){
var val ={class:this.class,total_score:this.score,count:1,avg_score:0};
emit(this.class,val);
}
3.编写ruduce函数
reduce=function(key,values){
var reducedObject = {class: key,total_score: 0,count:0, avg_score:0};
for (var i = 0; i < values.length; i++) {
reducedObject.total_score += values[i].total_score;
reducedObject.count +=values[i].count;
}
if(reducedObject.count>0)
reducedObject.avg_score =reducedObject.total_score /reducedObject.count;
return reducedObject;
}
4.执行mapReduce函数,生成结果collection.
db.person1.mapReduce(map,reduce,{out: "r2"})
5.查询执行结果
mongos> db.r2.find() { "_id" : 1, "value" : { "class" : 1, "total_score" : 753, "count" : 8, "avg_score" : 94.125 } } { "_id" : 2, "value" : { "class" : 2, "total_score" : 670, "count" : 7, "avg_score" : 95.71428571428571 } }
mapreduce运用的更多相关文章
- Mapreduce的文件和hbase共同输入
Mapreduce的文件和hbase共同输入 package duogemap; import java.io.IOException; import org.apache.hadoop.co ...
- mapreduce多文件输出的两方法
mapreduce多文件输出的两方法 package duogemap; import java.io.IOException; import org.apache.hadoop.conf ...
- mapreduce中一个map多个输入路径
package duogemap; import java.io.IOException; import java.util.ArrayList; import java.util.List; imp ...
- Hadoop 中利用 mapreduce 读写 mysql 数据
Hadoop 中利用 mapreduce 读写 mysql 数据 有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...
- [Hadoop in Action] 第5章 高阶MapReduce
链接多个MapReduce作业 执行多个数据集的联结 生成Bloom filter 1.链接MapReduce作业 [顺序链接MapReduce作业] mapreduce-1 | mapr ...
- MapReduce
2016-12-21 16:53:49 mapred-default.xml mapreduce.input.fileinputformat.split.minsize 0 The minimum ...
- 使用mapreduce计算环比的实例
最近做了一个小的mapreduce程序,主要目的是计算环比值最高的前5名,本来打算使用spark计算,可是本人目前spark还只是简单看了下,因此就先改用mapreduce计算了,今天和大家分享下这个 ...
- MapReduce剖析笔记之八: Map输出数据的处理类MapOutputBuffer分析
在上一节我们分析了Child子进程启动,处理Map.Reduce任务的主要过程,但对于一些细节没有分析,这一节主要对MapOutputBuffer这个关键类进行分析. MapOutputBuffer顾 ...
- MapReduce剖析笔记之七:Child子进程处理Map和Reduce任务的主要流程
在上一节我们分析了TaskTracker如何对JobTracker分配过来的任务进行初始化,并创建各类JVM启动所需的信息,最终创建JVM的整个过程,本节我们继续来看,JVM启动后,执行的是Child ...
- MapReduce剖析笔记之六:TaskTracker初始化任务并启动JVM过程
在上面一节我们分析了JobTracker调用JobQueueTaskScheduler进行任务分配,JobQueueTaskScheduler又调用JobInProgress按照一定顺序查找任务的流程 ...
随机推荐
- [Android Pro] android Flag介绍
一些Flag的介绍 窗口之后的内容变暗. public static final int FLAG_DIM_BEHIND = 0x00000002; 窗口之后的内容变模糊. public ...
- stm32学习笔记----双串口同时打开时的printf()问题
stm32学习笔记----双串口同时打开时的printf()问题 最近因为要使用串口2外接PN532芯片实现通信,另一方面,要使用串口1来将一些提示信息输出到上位机,于是重定义了printf(),使其 ...
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?为什么在类体内可以定义将静态成员声明为其所属类的类型呢 ?
static的成员变量,不是存储在Bar实例之中的,因而不会有递归定义的问题. 类声明: class Screen: //Screen类的声明 1 类定义: class Screen{ //Scree ...
- mysql php nginx 源码包下载地址
http://mirror.cogentco.com/pub/mysql/MySQL-5.5/ http://mirrors.sohu.com/php/ http://nginx.org/downlo ...
- java 学习之路
一.基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http://www.jcp.org/en/jsr/detail?id=133 http://i ...
- ***微信公众平台开发: 获取用户基本信息+OAuth2.0网页授权
本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称.头像.性别.国家.省份.城市.语言.本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息, ...
- poj 1088 dp **
链接:点我 记忆化搜索很好写 #include<cstdio> #include<iostream> #include<algorithm> #include< ...
- struts2框架——从后台取得数据集,并在前台页面循环显示
1.CourseBean.java public class CourseBean { private String f_courseId = ""; private String ...
- Ubuntu 登录命令和赋值命令
一. Ubuntu 设定root权限 进入 Terminal,输入命令su 如果没有给su赋root权限,则输入 sudo passwd root 赋值输入密码. 截图如下 二.以root身份进入l ...
- C#学习笔记(四)——变量的更多内容
一.类型转换 1.转换的类型 2.隐式转换 bool 和string 没有隐式转换,具有隐式转换的都列在下面的表格 . 记住一个规律,就是由精度低的类型转到精度高的类型是很容易的. 3.显式转换 (1 ...