`
yangfuchao418
  • 浏览: 161726 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在mongodb中使用mapreduce统计

 
阅读更多
在mongodb中一般的统计使用group就够了,但是针对大数据量group远远不够,这时使用自带的mapreduce统计不失为一个
好方法。当然也可以配置hadoop,结合hadoop使用更好。
mongodb中主要使用集合中的mapReduce方法来调用用js函数编写好的Map和reduce。

对于程序来说这里主要就是JS的编写了。既可以直接如下嵌入到代码中也可以把单独的js函数拿出来,再在java代码中加载

 @Test
    public void testMapReduce(){//插入测试数据
      
    Mongo  _db = new Mongo( "127.0.0.1" ).getDB( "jmrtest" ); 

    DBCollection c = _db.getCollection( "jmr" );
        c.drop();

        c.save( new BasicDBObject( "x" , new String[]{ "a" , "b" } ) );
        c.save( new BasicDBObject( "x" , new String[]{ "b" , "c" } ) );
        c.save( new BasicDBObject( "x" , new String[]{ "c" , "d" } ) );
        
        MapReduceOutput out =
            c.mapReduce( "function(){ " +
            		"for( var i=0; i<this.x.length; i++ )" +
            		"{ emit(this.x[i] , 1 ); } }",//map函数内使用this来操作当前行表示的对象,并且使用emit(key,value)方法来向reduce提供参数:
            		"function(key,values){" +
            		" var sum=0; " +
            		"for( var i=0; i<values.length; i++ )" +
            		" sum += values[i];" +
            		" return sum;}" ,//reduce的key就是emit(key,value)的key,value_array是同个key对应的多个value数组:
                         "result" , null );//mapReduce 方法2.x以后和1.X不同
        
        Map<String,Integer> m = new HashMap<String,Integer>();
        for (DBObject element :  out.results()) {
        	 System.out.println(element.get("value"));
		}
        for ( DBObject r : out.results() ){
        	System.out.println( ((Number)(r.get( "value" ))).intValue());
            m.put( r.get( "_id" ).toString() , ((Number)(r.get( "value" ))).intValue() );
        }
        System.out.println(m.size());
        assertEquals( 4 , m.size() );
        assertEquals( 1 , m.get( "a" ).intValue() );
        assertEquals( 2 , m.get( "b" ).intValue() );
        assertEquals( 2 , m.get( "c" ).intValue() );
        assertEquals( 1 , m.get( "d" ).intValue() );
                        
    }
 

 

1
1
分享到:
评论

相关推荐

    计算机后端-PHP视频教程. mongodb10 MapReduce 统计栏目下的商品.wmv

    计算机后端-PHP视频教程. mongodb10 MapReduce 统计栏目下的商品.wmv

    Mongodb中MapReduce实现数据聚合方法详解

    今天我们首先来讲讲mapReduce是如何统计,在后续的文章中,将另起文章进行相关说明。 MapReduce是啥呢?以我的理解,其实就是对集合中的各个满足条件的文档进行预处理,整理出想要的数据然后进行统计得到最终的统计...

    mongodb mapreduce 实例

    mongodb mapreduce 实例,该例子主要用来做订单统计的。具体问题请到博客提问。

    Mongodb最佳实践

    Mongodb是主流的NOSQL数据库之一,Mongodb最佳实践,详细介绍了Mongodb使用以及底层原理...通过这些学习对Mongodb全方位的学习和理解,适应企业多元化数据库的需要,现在很多企业都在使用Mongodb,像360,百度,京东等

    深入云计算 MongoDB管理与开发实战详解pdf.part1

    第7章 MapReduce统计 7.1 Map函数 7.2 Reduce函数 7.3 结果存储 7.4 对Reduce函数结果进一步处理 7.5 其他控制细节 7.6 本章小结 第3篇 管理篇 第8章 管理 8.1 启动和停止MongoDB 8.1.1 使用...

    Mongodb聚合函数count、distinct、group如何实现数据聚合操作

    上篇文章给大家介绍了Mongodb中MapReduce实现数据聚合方法详解,我们提到过Mongodb中进行数据聚合操作的一种方式——MapReduce,但是在大多数日常使用过程中,我们并不需要使用MapReduce来进行操作。在这边文章中,...

    深入云计算 MongoDB管理与开发实战详解pdf.part2

    第7章 MapReduce统计 7.1 Map函数 7.2 Reduce函数 7.3 结果存储 7.4 对Reduce函数结果进一步处理 7.5 其他控制细节 7.6 本章小结 第3篇 管理篇 第8章 管理 8.1 启动和停止MongoDB 8.1.1 使用...

    socialsensor-multimedia-analysis:包含一组对传入媒体项目流的分析过程

    在eu.socialsensor.framework.multimedia.counters包中有四个计数器,用于通过在 mongodb 中提交 map/reduce 作业来计算贡献者、域和标签。 贡献者计数器 ContributorsCounter 基于 mongodb 的 MapReduce 操作,...

    大数据整体架构.zip

    在数据存储方面,该文档解释了如何使用分布式文件系统(如Hadoop的HDFS)和NoSQL数据库(如MongoDB和Cassandra)来存储大量数据。它还介绍了数据湖的概念,这是一种存储原始数据的方法,以便后续进行处理和分析。在...

    【前端素材】大数据-设备统计.zip

    NoSQL数据库:NoSQL数据库(如MongoDB、Cassandra等)则更适用于处理这类数据。 数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:...

    【前端素材】大数据-大屏数据统计.zip

    NoSQL数据库:NoSQL数据库(如MongoDB、Cassandra等)则更适用于处理这类数据。 数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:...

    【前端素材】大数据-物联网平台数据统计.zip

    NoSQL数据库:NoSQL数据库(如MongoDB、Cassandra等)则更适用于处理这类数据。 数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:...

    【前端素材】大数据-大数据统计展示大屏.zip

    NoSQL数据库:NoSQL数据库(如MongoDB、Cassandra等)则更适用于处理这类数据。 数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:...

    【前端素材】大数据-XXX科技业务数据统计.zip

    NoSQL数据库:NoSQL数据库(如MongoDB、Cassandra等)则更适用于处理这类数据。 数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:...

    udacity-data-analyst-nanodegree:Udacity数据分析师纳米度的项目工作

    描述性统计推论统计Python简介数据科学导论使用MongoDB进行数据整理用R进行数据分析机器学习入门数据可视化和D3.js A / B测试获得的技能: Python(包括numpy,pandas,scikit-learn,ggplot ...) MongoDB ...

Global site tag (gtag.js) - Google Analytics