0

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

(...)
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);
      }
    }
(...)

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

4

2 回答 2

1

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

于 2009-04-22T18:17:31.497 回答
1

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

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

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

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

ckw

于 2009-04-22T22:06:08.703 回答