2017-03-27 11 views
2

通常、MapReduceジョブを実行するHDFS(〜20Gb)に大きなファイルがあります。およそ170のマッパーが作成されます。 InputFormatFileInputFormatです。MapReduceジョブをHDFSファイルの一部でのみ実行する

ここで、MapReduceジョブをファイルの一部(たとえば、ファイルの最初の40MB)でのみ実行したいとします。

これを実行する簡単な方法はありますか?

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

答えて

0

こんにちはすべては、

は最後に、私はFileInputFormatクラスを派生し、HDFSファイルの希望の部分に対応する唯一の分割を得るためにgetSplitsメソッドをオーバーライドからなる解決策を見つけました。

このメソッドでは、InputFileFormatクラスによって生成された分割を取得するためにスーパークラスを呼び出します。ジョブの設定のおかげで、私はHDFSファイルの先頭や、読みたいHDFSファイルの最後のような情報を得ることができます。最後に、スーパークラスのgetSPlitsメソッドから取得されたすべての分割の開始と終了が以前の情報と比較され、HDFSファイルの必要な部分と一致する場合に返されます。

+0

内蔵のTextInputFormat、KeyValueInputFormatを確認してください。私はあなたが車輪を再発明しようとしていると信じています。 – KrazyGautam

+0

こんにちは@KrazyGautam、TextInputFormatはバイナリファイルを処理するので私の場合に必要なものではありません。 – Cedekasme

関連する問題