2
是否所有emit()
都保证被发送到reduce函数?MongoDB MapReduce许多emit()的每个键
例如,如果你有这样的每个每个文档,但只有10个可能的emit()
键(涂抹均匀)emit()
一旦将精简函数获取具有100K排放在一个单一的通话抨击百万文件?
还是会mongo分裂这些并逐步减少结果?如果是的话,它如何决定发送给reduce的值有多少?
是否所有emit()
都保证被发送到reduce函数?MongoDB MapReduce许多emit()的每个键
例如,如果你有这样的每个每个文档,但只有10个可能的emit()
键(涂抹均匀)emit()
一旦将精简函数获取具有100K排放在一个单一的通话抨击百万文件?
还是会mongo分裂这些并逐步减少结果?如果是的话,它如何决定发送给reduce的值有多少?
同一个键的所有emit()s将被发送到reduce函数,但它们不一定会立即发送到reduce函数(如果单个文档是针对特定键发出的,文件不会传递给reduce函数)。对于同一个键,可能会多次调用Reduce,这就是减少函数的结果与map函数发出的文档结构相匹配的原因。
我会试着找出关于mongo在将文档传递给reduce函数之前如何分割文档的逻辑的更多信息。
基本上它由可用RAM的数量决定,MR尝试不超过。出于这个原因,使用“排序”选项是有益的,以便所有相同的密钥一次到达内存(并一起减少)。 – Jenna
如果我们想在结果中包含单个文档的关键字,解决方案是什么? –