您的位置:首页 > 其它

mapReduce概念及用法

2016-05-19 23:19 288 查看
mapReduce 随着"大数据"概念而流行.

其实mapReduce的概念非常简单,从功能上说,相当于RDBMS的group 操作

mapReduce的真正强项在哪?

答:在于分布式,当数据非常大时,像google,有N多数据中心,数据都不在地球的一端,用group力所不及.

group既然不支持分布式,单台服务器的运算能力必然是有限的.

而mapRecuce支持分布式,支持大量的服务器同时工作,用蛮力来统计.

mapRecuce的工作过程:

map-->映射

reduce->归约

map: 先是把属于同一个组的数据(相同的cat_id),映射到一个数组上.cat_id=3   [23,2,6,7]

reduce: 把数组(同一组)的数据,进行运算.

用mapReduce计算每个栏目的库存总量

map函数

var map = function() {

    emit(this.cat_id,this.goods_number);

    }

var reduce = function(cat_id,numbers) {  //这两个形参对应map函数中的this.cat_id,this.goods_number

    return Array.sum(numbers);

}

db.goods.mapReduce(map,reduce,{out:'res'});//将map、reduce计算的结果保存到res集合中

#用mapReduce计算每个栏目下商品的平均价格

var map = function() {

    emit(this.cat_id,this.shop_price);

    }

var reduce = function(cat_id,values) {

    return Array.avg(values);

}

db.goods.mapReduce(map,reduce,{out:'res'});

Array中有多个操作方法,可以使用js中的for进行循环打印

for ( var key in Array ) {
print(key)

}

mapReduce原理流程图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: