1

私は map-reduce ジョブを持っており、各マッパーの出力には確実に一意のキーがあるため、マッパーのみを使用しています。私の質問は、このジョブがいつ実行され、part-m-00000、part-m-00001 のような出力ファイルを取得するかです...それらはキー順にソートされますか?

または、part-r-00000、part-r-000001 などのファイルに書き込むだけのレデューサーを実装する必要がありますか。そして、これらは出力がキーの順序でソートされることを保証しますか?

4

3 に答える 3

0

map 関数がキーを出力すると、 sort を実行するパーティション関数に移動します。したがって、デフォルトでは、キーはソートされた順序になり、ID レデューサーを使用できます。

于 2012-11-14T23:47:31.937 に答える
0

ファイル内のキーをソートし、i が j より小さいときにファイル内のキーがファイル j 内のキーよりも小さいことを確認する場合は、リデューサーだけでなくパーティショナーも使用する必要があります。些細なことなので、Pig のようなものを使用してこれを行うことを検討することをお勧めします。MR でそれを行いたい場合は、ソートされたフィールドをキーとして使用し、パーティショナーを作成して、キーが最終的に正しいレデューサーになるようにします。

于 2012-11-14T21:46:38.247 に答える
0

ソート順を保証したい場合は、単一のIdentityReducer.

より並列化したい場合は、より多くのレデューサーを指定できますが、デフォルトでは、出力はファイル間ではなくファイル内でのみソートされます。つまり、各ファイルはソートされますが、part-r-00000 が part-r-00001 の前に来るとは限りません。ファイル間で並べ替えたい場合は、並べ替え順序に基づいて分割するカスタム パーティショナーを使用できます。IE、レデューサー 0 がすべての最下位キーを取得し、次にレデューサー 1、...、レデューサー N がすべての最上位キーを取得します。

于 2012-11-15T00:10:11.033 に答える