`

MongoDB之MapReduce

 
阅读更多

 MongoDB  MapReduce 相当于 Mysql 中的"group by", 所以在 MongoDB 上使用 Map/Reduce 进行并行"统计"很容易。

    使用 MapReduce 要实现两个函数 Map 函数和 Reduce 函数,Map 函数调用 emit(key, value), 遍历 collection中所有记录, key  value 传递给 Reduce 函数进行处理。 函数和 Reduce  Map 函数可以使用 JavaScript 来实现,可以通db.runCommand  mapReduce 命令来执行一个 MapReduce 的操作。

MongoDB之MapReduce - sheperd - 牧羊人的博客
MongoDB之MapReduce - sheperd - 牧羊人的博客 

参数说明

mapreduce: 要操作的目标集合。

map: 映射函数 (生成键值对序列,作为 reduce 函数参数)

reduce: 统计函数。

query: 目标记录过滤。

sort: 目标记录排序。

limit: 限制目标记录数量。

out: 统计结果存放集合 (不指定则使用临时集合,在客户端断开后自动删除)

keeptemp: 是否保留临时集合。

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

scope:  mapreducefinalize 导入外部变量。

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

 

8.1 Map

Map 函数必须调用 emit(key, value) 返回键值对,使用 this 访问当前待处理的 Document

m = function() { emit(this.classid, 1) }

value 可以使用 JSON Object 传递 (支持多个属性值)。例如:

emit(this.classid, {count:1}) 

 

8.2 Reduce

     Reduce 函数接收的参数类似 Group 效果, Map 返回的键值序列组合成 { key, [value1, value2, value3, value...] } 传递给 reduce

r = function(key, values) {

var x = 0;

values.forEach(function(v) { x += v });

return x;

}

8.3 Result

res = db.runCommand({

mapreduce:"students",

map:m,

reduce:r,

out:"students_res"

});

mapReduce() 将结果存储在 "students_res" 表中。

8.4 Finalize

利用 finalize() 我们可以对 reduce() 的结果做进一步处理。

f = function(key, value) { return {classid:key, count:value}; }

列名变与 “classid”和”count”,这样的列表更容易理解。

8.5 Options

可以添加更多的控制细节 。添加querysort等。

分享到:
评论

相关推荐

    MongoDB的MapReduce.pdf

    MongoDB的MapReduce是一种在大型数据集上进行并行计算的编程模型,尤其适用于数据分析任务。MapReduce由Google提出,其灵感来源于函数式编程语言中的Map和Reduce概念,旨在简化分布式计算,使得开发者无需深入理解...

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

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

    MongoDB中MapReduce的使用方法详解

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

    MongoDB MapReduce分享.ppt

    在这个“MongoDB MapReduce 分享”中,我们将深入探讨 MapReduce 在 MongoDB 中的应用及其核心概念。 MapReduce 包含两个主要函数:Map 和 Reduce。Map 阶段负责将输入数据分解成小块,然后对每一块应用一个函数,...

    MongoDB中的MapReduce简介

    MongoDB中的MapReduce是一种分布式计算模型,用于处理和分析海量数据。MapReduce包含两个主要阶段:Map阶段和Reduce阶段,这两个阶段共同实现了数据处理的并行化,从而提高处理效率。 Map阶段的主要任务是将原始...

    计算机后端-PHP视频教程. mongodb09 MapReduce 概念.wmv

    计算机后端-PHP视频教程. mongodb08 导出导入.wmv

    mongodb mapreduce 实例

    MongoDB的MapReduce是一个强大的工具,它允许用户在数据库中执行复杂的聚合操作,尤其是处理大数据集时。在这个实例中,我们将探讨如何利用MapReduce来统计订单数据,这在电子商务平台如“CShop”中是非常常见的需求...

    MongoDB与Hadoop MapReduce的海量非结构化数据处理方案.pdf

    MongoDB与Hadoop MapReduce的海量非结构化数据处理方案 本文旨在探索基于MongoDB与Hadoop MapReduce的海量非结构化数据处理方案,旨在解决大数据时代下的数据处理难题。该方案通过MongoDB Cluster、MongoDB-...

    MongoDB中MapReduce编程模型使用实例

    MongoDB是一个高性能、开源、无模式的文档导向数据库,由C++编写而成,支持MapReduce编程模型,MapReduce是一种计算模型,用于处理大规模数据集的并行运算。在MongoDB中,MapReduce主要用于执行复杂的数据聚合操作,...

    MongoDB学习笔记之MapReduce使用示例

    MongoDB的MapReduce是一个强大的工具,它允许开发者处理和聚合大量数据。MapReduce基于一种分布式计算模型,将大规模数据处理任务分解为两步:Map(映射)和Reduce(归约)。在这个过程中,MongoDB首先应用Map函数...

    MongoDB-MapReduce:大学项目

    然后我使用以下命令将文件中的所有单词导入到 MongoDB 数据库中: time mongoimport --type csv -c Words --file word_list.txt --headerline ##### 操作时间:0.758 秒。 ### 搜索字谜 为了查找字谜,我编写,...

    Pentaho Analytics for MongoDB Cookbook(2015)随书代码

    4. **大数据处理与MapReduce**: 在处理大量数据时,MongoDB的MapReduce功能可以帮助进行分布式计算。Chapter 7可能讲解了如何利用Pentaho与MongoDB的MapReduce接口进行数据处理,包括编写Map和Reduce函数、处理中间...

    NoSQL主流数据库-MongoDB.pptx

    * 支持 MapReduce:MongoDB 支持 MapReduce 操作,可以对大量数据进行分布式处理。 MongoDB 的缺点包括: * 不支持事务:MongoDB 不支持事务操作,可能会导致数据不一致的问题。 * 不支持JOIN操作:MongoDB 不支持...

    MapReduceMongoDB:在 MongoDB 中使用 Map reduce

    MongoDB 上的映射减少 马特乌斯·米奥特克04/01/2015 Sprzęt: Laptop ACER ASPIRE ONE 5820TG Procesor: Intel core I5-430M Ilość pamięci RAM: 8 GB Dysk twardy: SSD SanDisk 128 GB System Operacyjny: ...

Global site tag (gtag.js) - Google Analytics