这是标准的 map reduce 示例。
例如这里是基于mincemeat map/reduce 库的 Python 代码:
#!/usr/bin/env python
import mincemeat
S1 = {"a", "b", "c"}
S2 = {"a", "b", "d"}
S3 = {"a", "c", "e"}
datasource = dict(enumerate([S1,S2,S3]))
def mapfn(k, v):
for w in v:
yield w, 1
def reducefn(k, vs):
result = sum(vs)
return result
s = mincemeat.Server()
s.datasource = datasource
s.mapfn = mapfn
s.reducefn = reducefn
results = s.run_server(password="changeme")
print results
印刷
{'a': 3, 'c': 2, 'b': 2, 'e': 1, 'd': 1}
请注意,map/reduce 的结构方式意味着服务器在客户端完成任务时向客户端提供新任务。
这意味着对于每个客户端,不一定有 N/M 个任务的固定分区。
如果一个客户端比其他客户端更快,那么它最终将被分配更多任务,以充分利用可用资源。