addinputpath関数を同じパスで2回入力すると、同じファイルの2つのマッパーを生成できますが、毎回そのファイルを少しずつ処理したいと思います。異なるパラメータでファイルを2回読み取る
具体的には、Jobクラス(configuration.set/get)を通過するさまざまなパラメータを毎回使用したいと思います。ファイルが異なる場合は、context/inputsplitクラスを使用してファイルのパス/名前を取得しますが、それらは同じで、区別できません。何かご意見は?
各マッパは異なるマプタマスクですが、私がマプタマスクに関する情報を使用できるかどうかはわかりません。また、私はframeworkがmaptasksにinputsplitsと一致する順序を知らない - 有用かもしれない。
代わりに、私は(別の名前を使用して)ファイルを複製することができ、それが資源
問題は、/ *このキー値で何かを行う* /コストが高いため、放出が並行して起こらなければならないということです。実際には、同じファイルの2つの読み込みを区別する別の方法はありませんか? – user3161227
2つのスレッドで実行し、両方が完了するのを待ちますか? Hadoopは同じノード上で複数のマッパーを実行する可能性があるため、実際には大きな違いはありません。 – yurgis
/*このキー値* /で何かを行うとコストがかかると思うなら、最高の並列性を達成するためにもっと多くのマッパーを実行してください。ここでもまた、1つのマッパーが出力1を書いている間、もう1つのマッパーは出力2を書いているかもしれません。上のアプローチは、IOが2回実行されるのを避けるため、最適なパフォーマンスを発揮します。第2に、2つのファイルを区別して、同一のMRジョブで異なるパラメータをとることはできません。 –