|
|
1
68
从谷歌的摘要 MapReduce 研究出版物页面:
MapReduce的优点是可以在多个处理节点(多个服务器)上并行执行处理,因此它是一个可以很好地扩展的系统。
因为它是基于
functional programming
模型
乔尔 Can Your Programming Language Do This? 这篇文章讨论了如何理解函数式编程对于谷歌开发支持其搜索引擎的MapReduce至关重要。如果您不熟悉函数式编程以及它如何允许可伸缩代码,那么这是一个非常好的读物。 |
|
2
16
map是一个函数,它将另一个函数应用于列表中的所有项,以生成另一个包含所有返回值的列表。(另一种说法是“将f应用到x”是“调用f,传递x”。所以有时候说“应用”而不是“调用”听起来更好。)
这就是地图可能是用C(它叫
因为你是一个Java的家伙,Joel Spolsky喜欢对蹩脚的Java是多么的不公平的谎言(实际上,他不是撒谎,它是蹩脚的,但是我想赢你),这是我对Java版本的粗略尝试(我没有Java编译器,我模糊地记得Java版本1.1!):
我相信这可以在一百万方面得到改善。但这是基本的想法。
reduce是一个将列表中的所有项转换为单个值的函数。为此,需要给它另一个函数
在c中,称为reduce
这些Java版本需要添加泛型,但我不知道如何在Java中实现。但是您应该能够通过匿名的内部类来提供函数:
希望仿制药可以摆脱这些铸造。c中的类型安全等价物是:
为什么这个“酷”?将较大的计算拆分为较小的部分,以便以不同的方式将它们重新组合在一起的简单方法总是很酷的。谷歌应用这一理念的方式是并行化,因为地图和reduce都可以在多台计算机上共享。
但关键的要求不是您的语言可以将函数视为值。任何OO语言都可以做到。并行化的实际要求是
|
|
|
3
15
它比我能解释的更好。有帮助吗? |
|
|
4
2
在对冗长的华夫饼或很短的模糊的博客文章感到沮丧之后,我最终发现了这一点。 very good rigorous concise paper .
然后我继续进行,并通过转换成scala使其更加简洁,在这里我提供了一个最简单的例子,用户只需指定
|
|
|
5
1
|
|
|
6
0
map是可以应用于数组的本地JS方法。它创建了一个新的数组,这是映射到原始数组中每个元素的函数的结果。因此,如果您映射了一个函数(元素)返回元素*2;,它将返回一个新的数组,每个元素都加倍。原始数组将保持不变。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map reduce是一个本地JS方法,也可以应用于数组。它将一个函数应用于一个数组,并有一个称为累加器的初始输出值。它循环遍历数组中的每个元素,应用一个函数,并将它们减少到一个值(以累加器开始)。它很有用,因为你可以有任何你想要的输出,你只需要从那类累加器开始。所以,如果我想把某个东西简化成一个对象,我将从一个累加器开始。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce?v=a |
|
|
Shadi Alian · hadoop程序中的类型不匹配错误 8 年前 |
|
|
FlyingBurger · reduce函数包含操作 8 年前 |
|
|
FlyingBurger · 映射减少概念 8 年前 |
|
|
Sea Star · 如何确定map和reduce任务的数量? 8 年前 |
|
|
yzhan · Hadoop可写读字段EOFEException 8 年前 |
|
|
dakir08 · 在python中生成反向索引 8 年前 |