reducer中键值对的数量

时间:2014-06-04 20:08:43

标签: hadoop

我的问题是:

在hadoop mapreduce中,对于每个中间键,每个reducer任务都可以发出,每个键只有一个最终的键值对。还是程序员想要的多少?

3 个答案:

答案 0 :(得分:1)

这里有两点:

  1. Reducer可以发出许多键值对
  2. 所有键的类型相同,值的类型相同。
  3. 例如,

    public static class Reduce extends Reducer {

    contex.write(new Text(" key1"),new LongWritable(4));

    conte.write(new LongWritable(1),new Text(" value")); - 这行会给你一个编译时错误。

    键必须是Text类型,Value必须是LongWritable类型。

答案 1 :(得分:0)

假设您的密钥是LongWritable,值为Text。然后在reducer中你希望获得相同键的许多Text值,并且你可能希望在一行中写下这些值中的每一个:

for (Text value : values) {

    context.write(key,value)

}

答案 2 :(得分:0)

尽可能多的程序员想要的,唯一的约束是所有键的类型和值应该相同。只要您使用Writable,MapReduce就不会限制您使用键和值 所以对于特定的密钥

 for (Text value : values) {
    context.write(key,value)
 }

 for(int i=0; i < 10000 ; i++){
    context.write(key, new Text(String.valueOf(i)));
  //context.write(new Text("MyRandomKey"), new Text(String.valueOf(i)));
 }

考虑到您已将键和值定义为reducer中的文本

,这两个都很好