`
kobe学java
  • 浏览: 262379 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

快速例子学习mongodb的mapreduce

 
阅读更多

map和reduce是十分有用的操作,特别是在NOSQL中.本文简单小结下 
在mongodb中对mapreduce的操作,以及在JAVA中如何操作. 

1 启动mongodb 
   mongo启动即可 

2 建立db 
   use test 

3 加点记录 
   > book1 = {name : "Understanding JAVA", pages : 100} 
> book2 = {name : "Understanding JSON", pages : 200} 
   > db.books.save(book1) 
> db.books.save(book2) 
  继续加 
  > 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) 

4  先来做MAP,这里是先归类,按页数去划分分类,如下: 
  
Java代码   收藏代码
  1. > var map = function() {  
  2. var category;  
  3. if ( this.pages >= 250 )   
  4. category = 'Big Books';  
  5. else   
  6. category = "Small Books";  
  7. emit(category, {name: this.name});  
  8. };  


5 然后再按reduce来统计个数 
 
Java代码   收藏代码
  1. > var reduce = function(key, values) {  
  2. var sum = 0;  
  3. values.forEach(function(doc) {  
  4. sum += 1;  
  5. });  
  6. return {books: sum};  
  7. };  


6 然后再查看下,结果显示为: 
  > 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 } } 

7 换用JAVA去实现之,注意下载mongodb的驱动,代码如下: 
Java代码   收藏代码
  1. import com.mongodb.BasicDBObject;  
  2. import com.mongodb.DB;  
  3. import com.mongodb.DBCollection;  
  4. import com.mongodb.DBObject;  
  5. import com.mongodb.MapReduceCommand;  
  6. import com.mongodb.MapReduceOutput;  
  7. import com.mongodb.Mongo;  
  8.   
  9. public class MongoClient {  
  10.   
  11.  /** 
  12.   * @param args 
  13.   */  
  14.  public static void main(String[] args) {  
  15.   
  16.   Mongo mongo;  
  17.     
  18.   try {  
  19.    mongo = new Mongo("localhost"27017);  
  20.    DB db = mongo.getDB("library");  
  21.   
  22.    DBCollection books = db.getCollection("books");  
  23.   
  24.    BasicDBObject book = new BasicDBObject();  
  25.    book.put("name""Understanding JAVA");  
  26.    book.put("pages"100);  
  27.    books.insert(book);  
  28.      
  29.    book = new BasicDBObject();    
  30.    book.put("name""Understanding JSON");  
  31.    book.put("pages"200);  
  32.    books.insert(book);  
  33.      
  34.    book = new BasicDBObject();  
  35.    book.put("name""Understanding XML");  
  36.    book.put("pages"300);  
  37.    books.insert(book);  
  38.      
  39.    book = new BasicDBObject();  
  40.    book.put("name""Understanding Web Services");  
  41.    book.put("pages"400);  
  42.    books.insert(book);  
  43.    
  44.    book = new BasicDBObject();  
  45.    book.put("name""Understanding Axis2");  
  46.    book.put("pages"150);  
  47.    books.insert(book);  
  48.      
  49.    String map = "function() { "+   
  50.              "var category; " +    
  51.              "if ( this.pages >= 250 ) "+    
  52.              "category = 'Big Books'; " +  
  53.              "else " +  
  54.              "category = 'Small Books'; "+    
  55.              "emit(category, {name: this.name});}";  
  56.      
  57.    String reduce = "function(key, values) { " +  
  58.                             "var sum = 0; " +  
  59.                             "values.forEach(function(doc) { " +  
  60.                             "sum += 1; "+  
  61.                             "}); " +  
  62.                             "return {books: sum};} ";  
  63.      
  64.    MapReduceCommand cmd = new MapReduceCommand(books, map, reduce,  
  65.      null, MapReduceCommand.OutputType.INLINE, null);  
  66.   
  67.    MapReduceOutput out = books.mapReduce(cmd);  
  68.   
  69.    for (DBObject o : out.results()) {  
  70.     System.out.println(o.toString());  
  71.    }  
  72.   } catch (Exception e) {  
  73.    // TODO Auto-generated catch block  
  74.    e.printStackTrace();  
  75.   }  
  76.  }  
  77. }  

 

分享到:
评论

相关推荐

    30分钟学MongoDB系列——MapReduce处理和Mongo管理工具使用

    MongoDB是一种流行的NoSQL数据库,它以其灵活的数据模型和高性能而闻名。...通过学习MongoDB中的MapReduce和管理工具的使用,开发者和数据库管理员可以更加高效地完成任务,提升工作效率和数据处理能力。

    MongoDB中MapReduce的使用方法详解

    MongoDB的MapReduce是一种强大的工具,用于处理和分析大量数据,尤其适合于复杂的数据聚合任务。MapReduce的工作原理是将大规模数据集分解成小块,分别在不同的节点上执行计算,然后将结果合并以得到最终答案。在...

    MongoDB中的MapReduce简介

    MongoDB的MapReduce功能是基于分布式计算模型的一种数据处理方式,它允许用户在数据库中进行大规模数据处理。MapReduce的核心思想是将复杂的数据处理任务分解为两个主要阶段:Map阶段和Reduce阶段。 Map阶段是数据...

    MongoDB in action 源码

    8. MapReduce:虽然现代MongoDB推荐使用聚合框架,但MapReduce仍然是一种处理大数据的手段,用于批量数据处理和分析。 9. 安全性:MongoDB支持用户认证、角色权限控制和加密通信,保障数据安全。 10. 应用集成:...

    MongoDB、Java与对象关系映射

    MongoDB不仅提供了高性能的数据访问,而且还支持高级功能,如索引、分片(sharding)、复制(replication)和MapReduce等,这些特性使其成为处理大规模数据的理想选择。此外,MongoDB拥有一个庞大且活跃的社区,这...

    mogodb mapreduce方法

    MongoDB的MapReduce是一种强大的数据分析工具,用于处理和聚合大量数据。它借鉴了函数式编程的概念,通过两个主要函数——`map`和`reduce`,以及可选的`finalize`函数,来对数据库中的数据进行复杂的操作。在这个...

    阿里云emr spark kafka redis MongoDB例子demo

    在这个"阿里云EMR spark kafka redis MongoDB例子demo"中,我们看到了如何整合这些技术,构建一个实时数据处理系统,从Kafka获取数据,利用Spark Streaming进行实时分析,然后将结果存储到Redis和MongoDB,实现了...

    第一课:mongoDb快速入手1

    此外,MongoDB 支持索引,以提高查询性能,同时也提供了聚合框架(aggregation framework)和 mapReduce 功能,用于数据处理和分析。 在应用场景方面,MongoDB 适用于数据模型简单、需求变化频繁的项目。例如,在...

    MongoDB 文档操作-大数据实验五

    内容概要:本文档是一份针对MongoDB数据库的基本CRUD操作的学习指南。文中详细介绍了如何利用MongoDB进行文档的插入、更新、查询、...建议在实验环境搭建好后再进行学习,并亲自尝试每一个例子以获得更好的学习效果。

    MongoDB数据库:MongoDB与微服务架构集成

    下面是一个使用Python的pymongo库连接MongoDB的例子,展示如何插入和查询文档: ```python # 导入pymongo库 from pymongo import MongoClient # 连接到MongoDB client = MongoClient('localhost', 27017) db = ...

    第二课:mongodb企业级应用管理1

    在MongoDB中,聚合有两种主要形式:Pipeline聚合和MapReduce聚合。 1. Pipeline聚合: - `$match`:用于过滤输入文档,只保留满足特定条件的文档。 - `$project`:用于选择要包含在输出文档中的字段,以及转换...

    MongoDB创建用户

    MongoDB 是一个功能强大且灵活的 NoSQL 数据库,它提供了许多有用的特性和功能,例如数据存储、索引、查询、聚合、MapReduce 等。然而,在实际应用中,安全性是非常重要的一个方面,MongoDB 提供了多种方式来保护...

    PHP操作MongoDB时的整数问题及对策说明

    这个例子展示了如何使用MapReduce对`test`集合进行分组并计算`count`字段的总和,避免了`group`操作的问题。 需要注意的是,这些解决方案适用于特定的软件版本。在本例中,使用的MongoDB版本为1.6.5,PECL Mongo...

    Mongoika:MongoDB Clojure库

    Mongoika简化了构建行为,使其表现得像惰性序列,并使用Mongo Java驱动程序支持基本操作MapReduce和GridFS。 例子 ; ; Use mongoika namespace. ( use 'mongoika) ; ; Connect to a MongoDB server. ( with-mongo...

    mongodb聚合_动力节点Java学院整理

    本文将详细介绍MongoDB中的聚合操作,包括`count`、`distinct`、`group`以及相对复杂的`mapReduce`,并简要介绍游标的概念。 ### 1. 聚合操作 #### (1) `count` `count`方法用于统计集合中的文档数量,非常直观且...

Global site tag (gtag.js) - Google Analytics