前言
玩过Hadoop的小伙伴对MapReduce应该不陌生,MapReduce的强大且灵活,它可以将一个大问题拆分为多个小问题,将各个小问题发送到不同的机器上去处理,所有的机器都完成计算后,再将计算结果合并为一个完整的解决方案,这就是所谓的分布式计算。本文我们就来看看MongoDB中MapReduce的使用。
打算用mongodb mapreduce之前一定要知道的事!!!
mapreduce其实是分批处理数据的,每一百次重新reduce处理,所以到reduce里的数据如果是101条,那就会分2次进入。
这导致的问题就是在reduce中 如果 初始化 var count = 0;在循环中 count ++,最后输出的是1???
避免都方法是,把数据存在返回的value里,这个value是会在循环进入reduce的时候重用的。在循环中 count += value.count就能把之前都100加上了!!!
还有如果只有一条数据,那它不会进入reduce,会直接返回。
下面是具体例子:
mapReduceMongoDB中的MapReduce可以用来实现更复杂的聚合命令,使用MapReduce主要实现两个函数:map函数和reduce函数,map函数用来生成键值对序列,map函数的结果作为reduce函数的参数,reduce函数中再做进一步的统计,比如我的数据集如下:
runCommand实现我们也可以利用runCommand命令来执行MapReduce。格式如下:
mongodb mapreduce小试