减少我不确定的属性

时间:2014-02-05 19:52:52

标签: hadoop mapreduce

我是编写map-reduced的初学者,我不确定某些reduce函数属性。

因此,reduce将(键,值列表)作为输入参数...

  1. 是否保证输入值列表始终包含至少2个成员?那么,映射器发出的唯一键永远不会传递给reducer?
  2. 或者,如果输入列表中只有一个项目,是否保证密钥是唯一的?
  3. 可以减少发出更多值然后输入值列表大小?
  4. 我有一大串字符串。我需要找到所有不独特的东西。我可以只使用一张map / reduce吗?我看到的唯一方法是通过一个map / reduce计算所有唯一字符串,然后选择那些不是另一个map / reduce唯一的字符串/ reduce
  5. 由于

2 个答案:

答案 0 :(得分:1)

reduce()方法的输入值列表可能有一个或多个但不是零成员。

从/向唯一键值映射的所有值都作为列表传递给reduce以及键值。如果该列表包含一个成员,那么您可以假设该键值仅映射到一个值(或者,如果您正在计算,则为一次)

您的reducer可以为给定的输入键和值列表写入键值对的任何数字,包括零。输入键/值的类型可以与输出键/值对的类型不同。

您可以使用一个地图/缩小步骤解决问题

答案 1 :(得分:0)

所以,字符串的问题,伪代码:

map(string s) {
    emit(s, 0);
}


reduce(string key, list values) {
    if (valies.size() > 1) { emit(key, 1); return; }
    if (valuse.contains(1)) { emit(key, 1); return; }
}

正确?