是否总是需要Reduce来删除MapReduce中的重复项?

raf*_*ian 1 parallel-processing reduce mapreduce map

为什么MapReduce需要Reduce?如果计算书中单词数量这样的作业如果由单个进程执行或者在服务器场上进行MapReduced会导致相同的结果,那么是否有可能必须删除重复项?我假设Reduce步骤,至少在这个例子中,只是简化每个工作进程的结果并提供书中单词的总数.我不明白图片中有什么重复的东西.

Tud*_*dor 5

减少是一种更普遍的操作.它并不一定意味着"通过重复应用操作(例如求和)来聚合一组数值".Map-Reduce的正式定义是它是由以下阶段组成的转换:

  1. Map: (K k, V v) -> (K' k, V' v1 [, v2,...]) - 分别输入K和V类型的键值对的操作,并产生可能不同类型的值的键值或键列表.
  2. 执行分区的混洗阶段.
  3. Reduce: (K' k, V' v1 [, v2,...]) -> (K' k, V'' v1 [, v2,...])- 输入值键列表对的操作,其中"值列表"是由Map相位产生的与键k相对应的所有值的列表,并产生键值的键值或键列表对输出键必须与输入键具有相同的类型,并且值是任意类型.

这样,您可以看到Reduce操作更加灵活和通用.