Redian新闻
>
请教:Map reduce到底是什么啊 (转载)
avatar
t*2
2
【 以下文字转载自 SanFrancisco 讨论区 】
发信人: tianyagirl2 (呢喃), 信区: SanFrancisco
标 题: 请教:Map reduce到底是什么啊
发信站: BBS 未名空间站 (Mon May 26 23:28:01 2008)
我是CS的小本,经常听到有人说Google的map reduce,网上也找不到。请问这到底是什
么样的算法,是Google发明的么?谢谢。
avatar
b*6
3
reduce the size.
avatar
j*g
4
我也刚刚学的,不对的地方大家指正。
首先,最简单地说MapReduce是一种编程模式。举个例子,程序员有两个表分别有100条
记录要对他们进行join查询。最简单的办法是使用数据库。现在假设我们不想用数据库
,那么程序员把程序编写成这样
myMap.java
1.读入表文件A,B
2.做一些ETL工作,比如去除你不需要的列
3.将A和B里面的join key找出来,假设叫做key
4.将A和B所有记录按照(key,value)的格式发出去。
(key,value one from A)
(key,value two from A)
.......................
(key,value n from A)
(key,value one from B)
(key,value two from B)
.......................
(key,value m from B)
一般是发送到标准输出。
紧接着,运行时环境就处理你的(key,value)pair。把同样key的发到一个机器上(应该
是reduce进程,现在假设一台
avatar
b*n
5
写得相当详细. 楼主什么时候再写写Map Reduce对云计算的Implication?
avatar
m*r
6
map reduce是两种常见的高阶函数(high-order function),就是说它们接受至少一
个参数为函数。map 就是把一个函数应用到一个数据集里所有的元素上的高阶函数。
reduce是另外一个高阶函数,可以把一个集合的数简化(reduce)成一个值,这个
reduce一般接受一个associative 函数,譬如加法函数。
这两个函数联合起来用就可以实现很多计算。google用它是因为这个模式很适合‘并行
’的,’冗余‘的,’分布式‘的做web data有关的数据计算,譬如查找啥的。一般程
序员不需要关心并行啥的细节,只要写好那个给map、reduce的函数就好了。
除了这两个高阶函数外,还有很多别的常用函数,譬如scan。
这种东西也叫algorithm skeleton, algorithm template啥的。函数式编程语言里可
以很方便的做各种algorithm skeleton。所有的函数语言里,都包含有map、reduce这
两个最基本的高阶函数。

【在 t*********2 的大作中提到】
: 【 以下文字转载自 SanFrancisco 讨论区 】
: 发信人: tianyagirl2 (呢喃), 信区: SanFrancisco
: 标 题: 请教:Map reduce到底是什么啊
: 发信站: BBS 未名空间站 (Mon May 26 23:28:01 2008)
: 我是CS的小本,经常听到有人说Google的map reduce,网上也找不到。请问这到底是什
: 么样的算法,是Google发明的么?谢谢。

avatar
d*n
7
pig is still buggy

【在 j*******g 的大作中提到】
: 我也刚刚学的,不对的地方大家指正。
: 首先,最简单地说MapReduce是一种编程模式。举个例子,程序员有两个表分别有100条
: 记录要对他们进行join查询。最简单的办法是使用数据库。现在假设我们不想用数据库
: ,那么程序员把程序编写成这样
: myMap.java
: 1.读入表文件A,B
: 2.做一些ETL工作,比如去除你不需要的列
: 3.将A和B里面的join key找出来,假设叫做key
: 4.将A和B所有记录按照(key,value)的格式发出去。
: (key,value one from A)

avatar
t*2
8
我用了pig,觉得不是很方便啊。pig是面向oo得,但是她产生的map/reduce不一定是最
优化的吧?怎么才能看到pig自己产生的map/recude code呢?我想和自己写的作个比较。

【在 j*******g 的大作中提到】
: 我也刚刚学的,不对的地方大家指正。
: 首先,最简单地说MapReduce是一种编程模式。举个例子,程序员有两个表分别有100条
: 记录要对他们进行join查询。最简单的办法是使用数据库。现在假设我们不想用数据库
: ,那么程序员把程序编写成这样
: myMap.java
: 1.读入表文件A,B
: 2.做一些ETL工作,比如去除你不需要的列
: 3.将A和B里面的join key找出来,假设叫做key
: 4.将A和B所有记录按照(key,value)的格式发出去。
: (key,value one from A)

avatar
t*2
9
pig最主要的bug是什么?

【在 d**n 的大作中提到】
: pig is still buggy
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。