地图功能中推荐的最大发射量是多少?

时间:2012-08-09 17:34:07

标签: mongodb mapreduce pymongo

我是mongoDb的新手,并计划使用map reduce来计算大量数据。 如您所知,我们有map函数来匹配条件,然后为给定的字段发出所需的数据。在我的地图功能中,我有多个发射。截至目前,我有一个文档发出50个字段。这意味着从集合中的单个文档爆炸到临时表中的40个文档。因此,如果我要处理100万个文件,那么在地图功能结束时临时表中会有1百万* 40个文件。

下一步是对此集合进行排序。 (我没有使用地图的排序参数会有帮助吗?)

考虑将地图功能分成两个......但是还有一个问题......在执行地图功能时如果偶然我遇到了跳过整个文档数据的异常(即不从该文档中发出任何数据)但是如果我分手了,我将无法......。

在mongoDB.org中我发现了一条评论说......“当我运行MR工作时,排序 - 在MR的第一阶段需要1.5天达到23%。当我运行MR工作时,没有排序,它所有工作大约需要24-36个小时。当关闭时,jsMode会加速我的MR两次(在我关闭排序之前)“

启用排序帮助吗?或将关闭jsmode帮助?我正在使用mongo 2.0.5

有什么建议吗?

提前致谢.G

1 个答案:

答案 0 :(得分:1)

  

下一步是对此集合进行排序。 (我没有使用地图的排序参数会有帮助吗?)

不知道你的意思,MR没有排序参数,只有传入的查询有一个排序参数。传入查询的排序参数只对进入的数据进行排序。除非您正在寻找一些特定的行为,以避免使用传入排序对最终输出进行排序,因此通常不需要排序。

您希望如何使用此MR。很明显,它不会是实时的,否则你只会杀死你的服务器,所以我猜这是一个后台进程,它运行并按照你想要的方式格式化数据。我建议查看增量MR,以便您在一天内进行增量更新,以限制在任何给定时间使用的资源量。

  

因此,如果我要处理100万个文件,那么在地图功能结束时,临时表中会有1百万* 40个文件。

您是否多次发射?如果没有,那么临时表每行应该只有一个密钥,格式为:

{    _id:emit_id    [{//您发出的每个文档}] }

显示:http://kylebanker.com/blog/2009/12/mongodb-map-reduce-basics/

  

或将关闭jsmode帮助?我正在使用mongo 2.0.5

关闭jsmode不太可能做任何有意义的事情,并且结果也有所不同。