2009-04-22 4 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は 'レコードのKey位置に詰め込まれたものであればどんなものでもあります。バリューについても同じです。

重要な点は、キー/値のタイプが入力タイプ(テキスト、シーケンスファイルなど)に依存していることです。

ckw

1

私は間違っている可能性があります(私はマップを読んだり、チュートリアルを減らしていますが、まだ実際のプロジェクトでは使用していませんでしたが)、一般的に入力項目の識別子だと思います。たとえば、タプル(ファイル名、行番号)。この特定のケースでは、それはおそらく行番号であり、単語数には関心がありません。これは、ファイル単位ではなく、行単位で集計(たとえば、キーにその情報が含まれていた場合は複数のファイル)を集計することである場合に使用できます。

関連する問題