org.apache.hadoop.mapred.Mapper 中的“key K1”有什么用?
题
我正在学习 Apache Hadoop,并且正在查看 WordCount 示例 org.apache.hadoop.examples.WordCount. 。我已经理解这个例子,但是我可以看到变量 长可写密钥 未用于
(...)
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);
}
}
(...)
这个变量有什么用?有人能给我一个简单的例子吗?谢谢
解决方案
当的InputFormat是的TextInputFormat,关键是字节从当前输入文件的开头的偏移量。
值是简单的文本的线在该偏移量。
如果使用SequenceFileInputFormat,密钥将是任何被塞进了“记录的关键位置。这同样适用价值。
底线是它们键/值类型是依赖于输入类型(文本,序列文件,等)。
CKW
其他提示
我可能是错误的(我已读出的地图/减少教程,但没有用它为实际项目尚未),但我认为在一般它是输入条目的标识符;例如,元组(文件名,行号)。在这种特殊情况下,它是所谓的行号,这是不感兴趣的字数。如果这个想法是它可以用来,比如说,在每行,而不是每个文件的基础上总字数(或多个文件,如果没有钥匙包含的信息)。
不隶属于 StackOverflow