0

マッパーに供給されたファイルの各行を同じファイルの分割で提供するにはどうすればよいですか?

基本的に私がやりたいことは

for each line in file-split
{  

    for each line in file{     
             //process
    }

}

Javaでmap reduceを使用してこれを行うことはできますか?

4

3 に答える 3

0

実際、mapreduce ジョブがトリガーされると、最初に入力ファイルがチェックされます。簡単にするために、大きな入力ファイルが 1 つしかないことを考慮してください。サイズがブロック サイズよりも大きい場合、ジョブ トラッカーはこのファイルをブロック サイズでNo. of map tasks = No. of Splits分割し、生成を開始して、各分割を処理のために各マッパー タスクに渡します。したがって、各マッパーによって処理される分割は 1 つだけです。また、入力ファイルのサイズがブロック サイズよりも小さい場合、jobtrackerはそれを別の分割として受け取ります。

ブロック サイズが 64MB で、それぞれのサイズが 10MB のファイルが 2 つあるとします。この場合、jobtracker は 2 つの分割を生成します。FileInputFormat分割によると、正確に 1 つのファイル (ファイル サイズ <= ブロック サイズの場合) またはファイルの一部になる可能性があるためです。 (サイズ > ブロックサイズの場合)。

したがって、マッパーは単一の分割のみを処理し、分割に複数のファイルを含めることはできません(デフォルト形式の FileInputFormat には当てはまりますが、結合ファイル入力形式の場合は複数のファイルにまたがることができます)。

FilInputFormat を使用していると思います。チッ!

Hadoop: The Definitive Guideを参照して、その基本を理解できます。

于 2014-03-03T12:43:26.697 に答える