【发布时间】:2011-11-23 16:21:07
【问题描述】:
对于 map reduce 操作中使用的任何键,带有 can 键的元素可能遵循某种自然顺序。
假设我们要查找元素e0 和e1,这样:
- 每个都属于同一个键,
- 他们遵循一些命令
e0e1 - 没有元素
enwheree0en e1 关于我们的订购。 -
e0和e1之间存在某种关系。
(如何)使用 map reduce 可以有效地做到这一点?
解决这个问题的常用数据库方法是让光标悬停在按我们的排序排序的集合上。跟踪最后看到的元素和当前元素并测试关系。
map reduce 的问题在于,在减少 e0 和 e1 的 reduce 调用中,不知道是否存在 en 会破坏您的假设,即 e0 和 e1 是连续的.
有没有巧妙的方法解决这个问题?或者可以保证reduce调用中的一组元素是顺序的mapreduce框架?可以在mongodb中完成吗?
【问题讨论】:
-
我不确定我是否在关注,您是否有兴趣在 map/reduce 步骤中找到此类元素?还是在减少步骤中? if first: map/reduce 可以用来排序,那么它当然可以找到这样的一对。
-
似乎要做到这一点,您需要与数据一样多的内存或辅助存储。而游标/迭代器方法不需要额外的内存。你能提供算法实现的链接吗?我似乎找不到什么好东西。
-
问题:“如何解决 map reduce 架构中的顺序问题?”答:效率低下。
-
@Patrick87,我很怀疑(因此提出了问题)。只是希望有一些更实质性的 cmets/references/ideas。
-
@z5h:MapReduce 是并行编程的范例。 Amdahl 定律将由于并行化实现的加速限制为 1/(S+P/N),其中 S 和 P 是代码的串行/并行部分的分数,N 是处理器的数量。如果 S=1,则 P=0 并且加速比为 1,即,使用任意数量的 N 个处理器没有任何好处(在计算时间方面)。因此,如果您有一个“顺序”(即 100% 非并行,例如计算非关联归约操作)作业,MapReduce 永远不会有帮助。注意:也许你的问题比你想象的更相似。
标签: algorithm mongodb mapreduce