在此映射器函数中:
var mapper = function()
{
emit(this.gender,1)
}
1表示什么?
答案 0 :(得分:0)
它会将1
(值)添加到键gender
。
在reduce函数中,你可以总结一下。
示例:
地图:
male x 1
male x 1
female x 1
^---- this is the "1" you ask for
减少
male x2 (sums "male x 1" + "male x 1")
female x1
答案 1 :(得分:0)
MapReduce是一种递归机制,然后您需要在递归中使用基础。
例如,如果您有这些数据:
{"name" : "Tim", "country" : "USA", "age" : 15}
{"name" : "Sandra", "country" : "USA", "age" : 18}
{"name" : "Alex", "country" : "France", "age" : 19}
{"name" : "Zhong", "country" : "Taiwan", "age" : 19}
{"name" : "Tom", "country" : "USA", "age" : 20}
{"name" : "Marc", "country" : "France", "age" : 20}
{"name" : "Hao", "country" : "Taiwan", "age" : 12}
{"name" : "Jennifer","country" : "USA", "age" : 15}
{"name" : "Jean", "country" : "France", "age" : 17}
{"name" : "James", "country" : "USA", "age" : 17}
{"name" : "Peter", "country" : "USA", "age" : 20}
{"name" : "Jorge", "country" : "Portugal", "age" : 20}
如果您想知道按年龄划分的统计数据,可以应用此mapReduce函数:
function(){
return db.Data.mapReduce(
// Fonction MAP
function(){
emit(this.age,{count:1});
},
// Fonction REDUCE
function(key,values){
var reduced = {count:0};
values.forEach(function(val) {
reduced.count+=val.count;
});
return reduced;
},
// Configurations
{
out : 'Stats'
});
}
此图解释了在此过程中理论上会发生什么,emit函数将值设置为递归的基础: