我正在尝试使用 Map-Reduce 框架编写一个大型程序,该程序需要将整个过程拆分为三个 Map-Reduce 作业,这些作业应按顺序进行。
我正在使用 mincemeat.py因为我在很多地方读到它比 octo.py 和 python 中的其他框架实现更快。
但我无法链接多个作业,因为每个客户端都需要提供密码并连接到服务器才能执行。我的想法是,通过启动客户端,所有作业都应该按顺序运行。我是 python 的新手。如果有人可以在这方面帮助我,我将不胜感激。
下面是启 Action 业的代码,例如这里的wordCount..
s = mincemeat.Server()
s.datasource = datasource
s.mapfn = map_wordCount
s.reducefn = reduce_wordCount
wordCounts = s.run_server(password="password")
print wordCounts
我希望调用另一个作业的 map 和 reduce 函数,而不需要单独的客户端调用它。任何知道如何做到这一点的人。
谢谢。
最佳答案
你能不能不使用map
对于 Pool
将启动一批工作的 worker ,其目标是启动另一个 Pool
每次运行的 worker 数量 map
-减少工作?我从没听说过 mincemeat.py
, 但我用 pathos
来做到这一点框架……它提供了一个Pool
阻塞 map
, 迭代 imap
, 和异步 amap
(以及 pipes
)用于后端,例如 multiprocessing
, threading
, mpi4py
, parallel python
(基于套接字的分布式并行计算)和 ssh 隧道。
这会产生您选择的任何一个或多个后端的开销,因此对于非常小的任务,您会将大部分时间视为开销,但对于任何更大的任务,嵌套分布式并行计算是一个胜利。
你可以找到pathos
(和 pyina
-- mpi4py
的 pathos
部分)在这里: https://github.com/uqfoundation
关于python - 使用 Mincemeat.py 链接多个 Map-Reduce 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16779309/