使用MongoDB的MapReduce
MongoDB是用C ++编写的面向开源文档的NoSQL数据库系统。 您可以从此处阅读有关MongoDB的更多信息。
1.安装MangoDB。
2.运行MongoDB
3.启动MongoDB shell
mongo [ip_address]:[端口]
例如:mongo localhost:4000
4.首先创建一个数据库。
在MangoDB Shell中输入以下内容…
> use library
上面应该创建一个名为“ library”的数据库。
现在查看是否已创建数据库,只需键入以下内容-应该列出所有数据库。
> show dbs;
5.将数据插入MongoDB。
首先,使用以下命令创建两本书。
> book1 = {name : "Understanding JAVA", pages : 100}
> book2 = {name : "Understanding JSON", pages : 200}
现在,让我们将这两本书插入到名为books的集合中。
> db.books.save(book1)
> db.books.save(book2)
上面的两个语句将在数据库库下创建一个称为books的集合。 以下语句将列出我们刚刚保存的两本书。
> db.books.find();{ "_id" : ObjectId("4f365b1ed6d9d6de7c7ae4b1"), "name" : "Understanding JAVA", "pages" : 100 }
{ "_id" : ObjectId("4f365b28d6d9d6de7c7ae4b2"), "name" : "Understanding JSON", "pages" : 200 }
让我们再添加一些记录。
> book = {name : "Understanding XML", pages : 300}
> db.books.save(book)
> book = {name : "Understanding Web Services", pages : 400}
> db.books.save(book)
> book = {name : "Understanding Axis2", pages : 150}
> db.books.save(book)
6.编写地图功能
让我们以某种方式处理该图书馆藏书,我们需要找到页数少于250页且大于250页的书籍数量。
> var map = function() {
var category;
if ( this.pages >= 250 )
category = 'Big Books';
else
category = "Small Books";
emit(category, {name: this.name});
};
在此,由Map函数生成的集合将具有以下成员的集合。
{"Big Books",[{name: "Understanding XML"}, {name : "Understanding Web Services"}]);
{"Small Books",[{name: "Understanding JAVA"}, {name : "Understanding JSON"},{name: "Understanding Axis2"}]);
7.编写减少功能。
> var reduce = function(key, values) {
var sum = 0;
values.forEach(function(doc) {
sum += 1;
});
return {books: sum};
};
8.针对books集合运行MapReduce。
> var count = db.books.mapReduce(map, reduce, {out: "book_results"});
> db[count.result].find(){ "_id" : "Big Books", "value" : { "books" : 2 } }
{ "_id" : "Small Books", "value" : { "books" : 3 } }
上面说,我们有2本大书和3本小书。
上面使用MongoDB Shell完成的所有操作,也可以使用Java完成。 以下是它的Java客户端。 您可以从此处下载所需的从属jar。
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.MapReduceCommand;
import com.mongodb.MapReduceOutput;
import com.mongodb.Mongo;public class MongoClient {/*** @param args*/public static void main(String[] args) {Mongo mongo;try {mongo = new Mongo("localhost", 27017);DB db = mongo.getDB("library");DBCollection books = db.getCollection("books");BasicDBObject book = new BasicDBObject();book.put("name", "Understanding JAVA");book.put("pages", 100);books.insert(book);book = new BasicDBObject(); book.put("name", "Understanding JSON");book.put("pages", 200);books.insert(book);book = new BasicDBObject();book.put("name", "Understanding XML");book.put("pages", 300);books.insert(book);book = new BasicDBObject();book.put("name", "Understanding Web Services");book.put("pages", 400);books.insert(book);book = new BasicDBObject();book.put("name", "Understanding Axis2");book.put("pages", 150);books.insert(book);String map = "function() { "+ "var category; " + "if ( this.pages >= 250 ) "+ "category = 'Big Books'; " +"else " +"category = 'Small Books'; "+ "emit(category, {name: this.name});}";String reduce = "function(key, values) { " +"var sum = 0; " +"values.forEach(function(doc) { " +"sum += 1; "+"}); " +"return {books: sum};} ";MapReduceCommand cmd = new MapReduceCommand(books, map, reduce,null, MapReduceCommand.OutputType.INLINE, null);MapReduceOutput out = books.mapReduce(cmd);for (DBObject o : out.results()) {System.out.println(o.toString());}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}
参考: Facile Login博客上的JCG合作伙伴 Prabath Siriwardena的MongoDB与MapReduce 。
翻译自: https://www.javacodegeeks.com/2012/06/mapreduce-with-mongodb.html
使用MongoDB的MapReduce相关推荐
- MongoDB中mapReduce的使用
MongoDB中mapReduce的使用 制作人:全心全意 mapReduce的功能和group by的功能类似,但比group by处理的数据量更大 使用示例: var map = function ...
- MongoDB中MapReduce介绍与使用
本文来说下MongoDB中MapReduce介绍与使用 文章目录 概述 概述
- 一篇文章带你搞定 MongoDB 中 MapReduce 使用
玩过 Hadoop 的小伙伴对 MapReduce 应该不陌生,MapReduce 的强大且灵活,它可以将一个大问题分解为多个小问题,将各个小问题发送到不同的机器上去处理,所有的机器都完成计算后,再将 ...
- MongoDB:MapReduce的使用
文章目录 MongoDB:MapReduce的使用 一.简介 二.MapReduce命令 基本语法 案例 三.runCommand 命令 语法 案例 MongoDB:MapReduce的使用 一.简介 ...
- 用MongoDB实现MapReduce
来源:http://blog.csdn.net/star_zongke/article/details/7475455 MapReduce 是 Google 在 2004 年发布的一个软件框架,用于支 ...
- 在MongoDB的MapReduce上踩过的坑
太久没动这里,目前人生处于一个新的开始.这次博客的内容很久前就想更新上来,但是一直没找到合适的时间点(哈哈,其实就是懒),主要内容集中在使用Mongodb时的一些隐蔽的MapReduce问题: 1.R ...
- mongodb mapreduce用法
mongoDB的MapReduce简介 分类: MongoDB2012-12-06 21:378676人阅读评论(2)收藏举报 MongoDB MapReduce ...
- 快速掌握mongoDB(二)——聚合管道和MapReduce
上一节简单介绍了一下mongoDB的增删改查操作,这一节将介绍其聚合操作.我们在使用mysql.sqlserver时经常会用到一些聚合函数,如sum/avg/max/min/count等,mongoD ...
- MongoDB(3)--有关NoSQL及MongoDB的一些概念
学习任何东西在没有理解的前提下去背熟一些概念是没有用的,就像只背会了几个概念而没有理解的开发人员去面试是经不住面试官的追问的.前面的两篇对MongoDB做了简单的介绍,能够很快上手,对MongoDB有 ...
最新文章
- jquery 地理位置 与 IP地址
- 第一个Swift程序Hello World
- try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后?...
- Gradle接口:Gradle构建元数据
- php 实现贪吃蛇游戏,C++实现简单贪吃蛇游戏
- idea项目application.properties文件注释显示unicode编码
- jquery的ajax查询数据库,jquery中使用ajax获取远程页面信息
- 温故而知新:查看端口占用情况以及DOS中的管道操作/重定向操作
- 第二章 字符串处理与编码不再发愁
- python_07 函数作用域、匿名函数
- NYOJ 90整数划分
- lua 令牌桶 源码_Redis和Lua脚本(实现令牌桶限流)
- BlackBerry9700刷机
- gateway 动态路由
- python基础-古诗词填词游戏
- linux批量解压压缩包
- swiper ie11版本兼容调整
- 哪款护眼灯最适合学生?教育部入围护眼照明品牌
- 数据结构 严薇敏 队列 的实现及其使用方法详解
- 二叉树的基本操作——数据结构实验报告
热门文章
- 为什么jdk的CLASSPATH环境变量需要设置rt.jar 和 tools.jar
- Get和Post请求和对应的参数获取
- recorder_将Java Flight Recorder与OpenJDK 11一起使用
- kata_小规模流处理kata。 第1部分:线程池
- java对话_您应该保持联系的十大高级Java对话
- cloud foundry_将Spring Boot应用程序绑定到Cloud Foundry中的服务的方法
- stackoverflow_Stackoverflow的见解:投票最多的是Spring 4问题
- Hibernate锁定模式– OPTIMISTIC_FORCE_INCREMENT锁定模式如何工作
- jetty嵌入式容器_嵌入式Jetty和Apache CXF:借助Spring Security来保护REST服务
- 为什么在生产中进行硒自动化测试对于您的下一个版本至关重要?