我目前正在开展一个项目,该项目涉及对许多相对较小的数据集执行大量统计计算。其中一些计算与计算移动平均值一样简单,而其他计算涉及稍微多一些工作,如Spearman的Rho或Kendell的Tau计算。
数据集本质上是一系列打包到字典中的数组,其关键字与MongoDb中的文档ID相关,后者提供有关子集的更多信息。字典中的每个数组都不超过100个值。然而,词典可能无限大。然而,在所有现实中,每年大约有150个值添加到字典中。
我可以使用mapreduce来执行所有必要的计算。或者,我可以在分布式系统上使用Celery和RabbitMQ,并在python中执行相同的计算。
我的问题是:哪种渠道最值得推荐或最佳实践?
以下是一些其他信息:
感谢您的帮助!
答案 0 :(得分:0)
没有基准测试肯定是不可能的,但是我的直觉倾向于在Python而不是mapreduce中进行更多的计算。我主要担心的是mapreduce是单线程的:一个MongoDB进程一次只能运行一个Javascript函数。但是,它可以同时处理数千个查询,因此您可以通过从多个Python进程查询MongoDB来利用该并发性。