2017-11-17 2 views
0

私はMapreduceの学習を始め、いくつかの質問をしたいと思います。ここに行く:InputSplits in mapreduce

ケース1:入力形式としてFileInputFormat。処理されるべき複数のファイルを有するディレクトリは、入力パスである。 n個のファイルがある場合、hadoopクラスタ内のブロックサイズより小さいファイルすべてマップの分割数は、ジョブを減らすために計算されますか?

2)MyFileInputFormatというクラスでFileInputFormatを拡張し、isSplitableをオーバーライドして常にfalseを返すようにします。入力設定は上記と同じです。 この場合、n個の分割が得られますか?

3)n個のファイルの中の1つのファイルがクラスタのブロックサイズよりわずかに大きい場合、2番目のケースではn + 1個の分割が得られますか?

ありがとうございました!

答えて

0

  1. FileInputFormatは、したがって、あなたがそれを直接使用することはできません抽象あるFileInputFormat

    の基本から始めましょう。 "public abstract class FileInputFormat"

  2. TextInputFormat(TextInputFormatクラスを拡張したFileInputFormat)のようなInputFormatを使用して質問に答えようとします。

  3. FileInputFormatのsplitMethodロジックは、入力パスのファイルごとに適用されるため、MapReduceジョブ(Case1)に「N」分割があります。

  4. Case2の場合、inputformatに個々のファイルを分割しないよう通知したので、N個の分割が残っています。しかし、各ファイルについて、それを1つの分割として考えてください。

  5. ケース3では、ファイルが分割されていないため、N個の分割が残っています。スプリットロジックは個々のファイルに適用され、それらを一緒に考慮しないことを覚えておいてください。

  6. CombineInputFormatは、分割ロジック中に入力ファイルを結合する場合に使用されます。

+0

ありがとうGautam。 3番目のケースでは、isSplitableがtrueを返すと、次にN個の分割がありますか? – user1808266

+0

ありがとうのトークンとしてupvoteしてください。 ケース1:N ケース2:N ケース3:N +1 – KrazyGautam

+0

こんにちはGautam。私はあなたの答えをupvoted、しかし私は2の評判を持っているように表示されません:(しかし、私は真剣に感謝しています。 – user1808266