理解<>中扩展类中的信息在Java?

时间:2016-11-19 06:55:11

标签: java hadoop

public static class Map extends Mapper<Text, Text, Text, Text> {

我多年来第一次使用Java开发。我正在Hadoop中实现一些map reduce方法。有人可以解释这个类定义中<Text, Text, Text, Text>的要点吗?到底是做什么的?

  public static class TokenizerMapper
       extends Mapper<Object, Text, Text, IntWritable>{

    private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();

    public void map(Object key, Text value, Context context
                    ) throws IOException, InterruptedException {
      StringTokenizer itr = new StringTokenizer(value.toString());
      while (itr.hasMoreTokens()) {
        word.set(itr.nextToken());
        context.write(word, one);
      }
    }
  }

1 个答案:

答案 0 :(得分:3)

documentation提供了非常简洁的细分。

 public class Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT>

以你的例子......

  • KEYINObject
  • VALUEINText
  • KEYOUTText
  • VALUEOUTIntWritable

我不熟悉Hadoop的方式,但是如果我不得不冒险猜测,你接受Object类型的密钥,类型为Text的值,并输出一个类型为Text的密钥,类型为IntWritable的值。

<Text, Text, Text, Text>绑定的类型也是如此,除了所有 - 键和值 - 都是Text