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

InputFormat が TextInputFormat の場合、Key は現在の入力ファイルの先頭からのバイト オフセットです。

値は、そのオフセットにあるテキスト行です。

SequenceFileInputFormat が使用された場合、キーはレコードのキー位置に詰め込まれたものになります。値についても同様です。

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

cw

于 2009-04-22T22:06:08.703 に答える
1

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

于 2009-04-22T18:17:31.497 に答える