2009-04-22 46 views
0

我正在學習Apache Hadoop,我正在查看WordCount示例org.apache.hadoop.examples.WordCount。我已經明白這個例子,不過,我可以看到變量LongWritable關鍵沒有在org.apache.hadoop.mapred.Mapper中'key K1'的用法是什麼?

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

什麼用這個變量的使用?有人能給我一個簡單的例子嗎? 謝謝

回答

1

當InputFormat是TextInputFormat時,Key是從當前輸入文件開始的字節偏移量。

值只是該偏移處的文本行。

如果使用SequenceFileInputFormat,則Key將被填充到'record'的Key位置中。價值相同。

底線是它們的鍵/值類型取決於輸入類型(文本,序列文件等)。

ckw

1

我可能是錯的(我已閱讀地圖/減少教程,但尚未用於真正的項目呢),但我認爲它一般是輸入條目的標識符;例如元組(文件名,行號)。在這個特殊情況下,它應該是行號,對於字數來說是沒有意義的。如果想法是,例如,按照每行而不是按文件的方式(或者如果密鑰確實包含該信息的話,多個文件)聚合字數,則可以使用它。

相關問題