org.apache.hadoop.mapred.Mapper での「キー K1」の用途は何ですか?
質問
私は 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);
}
}
(...)
この変数の用途は何ですか?誰かがそれが使用される簡単な例を教えてもらえますか?ありがとう
解決
InputFormat が TextInputFormat の場合、Key は現在の入力ファイルの先頭からのバイト オフセットです。
値は、単にそのオフセットにあるテキスト行です。
SequenceFileInputFormat が使用された場合、キーはレコードのキー位置に詰め込まれたものになります。値についても同様です。
要するに、キー/値タイプは入力タイプ (テキスト、シーケンス ファイルなど) に依存するということです。
CKW
他のヒント
私は間違っている可能性があります (map/reduce チュートリアルを読んだことがありますが、実際のプロジェクトではまだ使用していません) が、一般的には入力エントリの識別子だと思います。たとえば、タプル (ファイル名、行番号) です。この特定のケースでは、これはおそらく行番号であり、単語数には関係ありません。たとえば、ファイルごとではなく行ごとに単語数を集計するというアイデアがある場合に使用できます (または、キーにその情報が含まれている場合は複数のファイルに対して)。
所属していません StackOverflow