0

我正在为 MongoDB 编写 MapReduce 代码(显然是在 Javascript 中)。在reduce代码中,看起来我必须总是返回一些值(与发射相同)?我找不到不这样做的方法,但如果我可以停止在 reduce 函数中发出记录,我的代码可以更简单,所以我想知道。

4

2 回答 2

0

我相信发射是完全可选的(顺便说一句,在你的地图中“返回”一个值不应该做任何事情)。只是不要在你的映射函数内部发出,结果不会进入减少函数

于 2012-11-24T03:59:00.210 回答
0

我试图了解你来自哪里。

MR 的基础是 Map Reduce。如果您的 MR 没有 reduce 功能,则没有输出。因此,总是需要一个 reduce 函数。

确实,如果您从 map 函数中发出一行,那么 reduce 不需要运行。然而,要让 MR 完全运行,它必须调用 reduce 函数,否则没有输出,这会使 MR 毫无意义。

在reduce代码中,看起来我必须总是返回一些值(与发射相同)?

是的,这是因为 MR 在数学上是如何工作的:http ://www.mongodb.org/display/DOCS/MapReduce#MapReduce-Amoretechnicalexplanation你可以在那里看到它的基本解释。MongoDB 期望像这样运行它,因为它只支持这种方法。

于 2012-11-24T22:59:36.143 回答