通常、MapReduceジョブを実行するHDFS(〜20Gb)に大きなファイルがあります。およそ170のマッパーが作成されます。 InputFormat
はFileInputFormat
です。MapReduceジョブをHDFSファイルの一部でのみ実行する
ここで、MapReduceジョブをファイルの一部(たとえば、ファイルの最初の40MB)でのみ実行したいとします。
これを実行する簡単な方法はありますか?
ありがとうございました。
通常、MapReduceジョブを実行するHDFS(〜20Gb)に大きなファイルがあります。およそ170のマッパーが作成されます。 InputFormat
はFileInputFormat
です。MapReduceジョブをHDFSファイルの一部でのみ実行する
ここで、MapReduceジョブをファイルの一部(たとえば、ファイルの最初の40MB)でのみ実行したいとします。
これを実行する簡単な方法はありますか?
ありがとうございました。
こんにちはすべては、
は最後に、私はFileInputFormat
クラスを派生し、HDFSファイルの希望の部分に対応する唯一の分割を得るためにgetSplits
メソッドをオーバーライドからなる解決策を見つけました。
このメソッドでは、InputFileFormat
クラスによって生成された分割を取得するためにスーパークラスを呼び出します。ジョブの設定のおかげで、私はHDFSファイルの先頭や、読みたいHDFSファイルの最後のような情報を得ることができます。最後に、スーパークラスのgetSPlits
メソッドから取得されたすべての分割の開始と終了が以前の情報と比較され、HDFSファイルの必要な部分と一致する場合に返されます。
内蔵のTextInputFormat、KeyValueInputFormatを確認してください。私はあなたが車輪を再発明しようとしていると信じています。 – KrazyGautam
こんにちは@KrazyGautam、TextInputFormatはバイナリファイルを処理するので私の場合に必要なものではありません。 – Cedekasme