Map-Reduce和分片集合


进入MongoDB中文手册(4.2版本)目录

Map-reduce支持对分片集合的操作,既可以作为输入,也可以作为输出。本节特定描述mapReduce分片集合的行为 。
但是,从4.2版开始,MongoDB不建议使用map-reduce的选项创建新的分片集合,以及map-reduce的sharded选项。要输出到分片集合,首先要创建分片集合。MongoDB 4.2也不建议替换现有的分片集合。

1 分片集合作为输入

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

2 分片集合作为输出

如果mapReduce的out字段具有sharded值,则MongoDB使用_id字段作为分片键对输出集合进行分片。

注意
从4.2版开始,MongoDB弃用了mapReducedb.collection.mapReduce的sharded选项。

要输出到分片集合:

  • 如果输出集合不存在,请首先创建分片集合。
    从4.2版开始,MongoDB不建议使用map-reduce的选项创建新的分片集合,以及map-reduce的sharded选项。因此,要输出到分片集合,请首先创建分片集合。
    如果您没有首先创建分片集合,则MongoDB会在_id上创建和分片集合。但是,建议您首先创建分片集合。
  • 从4.2版开始,MongoDB不建议替换现有的分片集合。
  • 从版本4.0开始,如果输出集合已存在但未分片,则map-reduce失败。
  • 对于新的或空的分片集合,MongoDB使用map-reduce操作的第一阶段的结果来创建在分片之间分布的初始块(chunks)
  • mongos并行地将map-reduce后处理作业分派给拥有块的每个分片。在后处理期间,每个分片将从其他分片中提取其自身块的结果,运行最终的reduce / finalize,然后本地写入输出集合。

注意
在map-reduce作业之后,MongoDB根据需要拆分块。
在后期处理过程中,将自动防止输出集合的块平衡,以避免并发问题。

进入MongoDB中文手册(4.2版本)目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值