2013-06-08 5 views
5

MapReduceプログラムへの入力としてHDFSにそれぞれ1MBの2つのテキストファイルが格納されています。次の行では、map()の入力ペアを考えています。map()のLongWritableキー入力とは何ですか?

class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { 

ここでLongWritableキーとは何ですか? MapReduceはどのように仮定していますか?入力ファイル内の各テキスト行にキーがあるか、ファイル内の完全なテキスト(つまり、一度にすべての行)について単一のキーが想定されていますか?

答えて

-1

それはラインのバイトオフセットであるか、行番号

+1

あなたは答えの 'または'部分をスキップしてください。 offsetは行番号ではありません。これは行のバイト位置です。 – Tariq

+0

私はこれを取得していません。どのように行のオフセットがその行の数と同じになるのですか?これを理解するのを手伝ってください。 – Tariq

+0

@ChrisGerkenあなたは間違っています – slater

6

の1-言うことができ、ここでLongWritableキーは、ファイル内のその行のpositionnot行数を意味するラインのoffsetです。これらの間に差異のあるa lotがあります。

2 MapReduceフレームワークによってnot assumedです。あなたがそれを決定するためにMR仕事で使用しているのはInputFormatの義務です。デフォルトはTextInputFormatで、あなたの場合のように、行のバイトオフセットをキーとして与えます。

3まあ、もう一度あなたのInputFormatに依存します。 TextInputFormatを使用している場合、各行はそのオフセットをキーとして値として扱われます。しかし、独自のカスタムInputFormatを持つことができます。これは、ファイル全体の1つのキーとそのファイルのすべての行を値としてまとめたものです。

+1

位置は明らかに数字ではありません。私はdownvoteの理由があるかもしれない?IMHO、それは正しい定義、私がmapreduceについて学んだことに基づいています。また、あなたが指しているドキュメントを指摘してください。私は本当にそれを感謝します。ありがとうございました。 – Tariq

関連する問題