Docs 菜单
Docs 主页
/
MongoDB Manual
/ /

Map-Reduce 和分片集合

在此页面上

  • 作为输入的分片collection
  • 作为输出的分片collection

注意

聚合管道作为 Map-Reduce 的替代方案

从MongoDB 5.0开始, map-reduce已弃用:

有关 map-reduce 的聚合管道替代方案的示例,请参阅:

map-reduce 支持对分片collection进行操作,既可以作为输入,也可以作为输出。本部分介绍特定于分片集合的mapReduce行为。

使用分片集合作为 map-reduce 操作的输入时, mongos会自动将 map-reduce 作业并行分派到每个分片。 无需特殊选项。 mongos将等待所有分片上的作业完成。

如果mapReduceout字段的值为sharded ,则 MongoDB 使用_id字段作为分片键对输出collection进行分片。

要输出到分片collection:

  • 如果输出集合不存在,则先创建分片集合。

  • 如果输出集合已存在但未分片,则map-reduce分片的。

  • 对于新的或空的分片collection,MongoDB 使用 map-reduce 操作第一阶段的结果来创建在分片之间分布的初始数据块。

  • mongos 并行向拥有数据块的每个分片分派 map-reduce 后处理作业。在帖子处理过程中,每个分片都会从其他分片中提取自己的数据块结果,运行最终的 reduce/finalize,并在本地写入输出collection。

注意

  • 在后续的 map-reduce 作业中,MongoDB 会根据需要分割数据块。

  • 在帖子过程中,会自动阻止输出collection的数据块均衡,从而避免出现并发问题。

后退

Map-Reduce