org.apache.hadoop.mapred.Mapper中'key K1'的用途是什么?

时间:2009-04-22 18:12:47

标签: hadoop mapreduce

我正在学习Apache Hadoop,而我正在查看WordCount示例org.apache.hadoop.examples.WordCount。我已经理解了这个例子,但是我可以看到变量 LongWritable key 没有在

中使用
(...)
public void map(LongWritable key, Text value, 
                    OutputCollector<Text, IntWritable> output, 
                    Reporter reporter) throws IOException {
      String line = value.toString();
      StringTokenizer itr = new StringTokenizer(line);
      while (itr.hasMoreTokens()) {
        word.set(itr.nextToken());
        output.collect(word, one);
      }
    }
(...)

这个变量有什么用?有人可以给我一个简单的例子吗? 感谢

2 个答案:

答案 0 :(得分:1)

我可能是错的(我已经阅读了map / reduce教程,但还没有将它用于实际项目),但我认为通常它是输入条目的标识符;例如,元组(文件名,行号)。在这种特殊情况下,它应该是行号,而且对字数没有兴趣。如果想法是,例如,在每行上汇总字数,而不是按文件汇总(或者如果密钥确实包含该信息则为多个文件),则可以使用它。

答案 1 :(得分:1)

当InputFormat是TextInputFormat时,Key是从当前输入文件的开头偏移的字节。

值只是该偏移处的文本行。

如果使用了SequenceFileInputFormat,则Key将是填充到'记录的Key位置的任何内容。价值也一样。

底线是它们的键/值类型取决于输入类型(文本,序列文件等)。

CKW