Python中用于Map-Reduce的Celery或其他替代方案?
2 个回答
2
简单来说,你需要把一个任务的结果拿来当作另一个任务的输入。celery在这方面不太方便。
在celery的方式中,你可以有一个定时任务调度器,它会以异步的方式执行这些工作(也就是map部分),如果是在单台电脑上,它会保留任务的引用;如果是在多个地方,就把这个引用存到数据库后端(比如redis、mongo等)。你可能还需要一些调度器来收集这些结果,并把它们应用到reduce函数上。
我建议你在所有的集群上运行自己的python进程来处理map和reduce,并确保把结果存储在像redis这样的内存数据库中,同时用celery来执行map和reduce的任务。你的主进程会负责收集和合并这些结果。