MapReduceがリデュース・キーでデータを集計する場合、各リデュース・タスクはそのタスク内のキーごとに値を集計します。ただし、Perfect Balanceで分割が有効になっている場合、リデュース・キーに関連付けられた行は異なるリデュース・タスクに存在し、部分集計になる可能性があります。このように、リデュース・キーの値は、リデュース・タスク全体ではなく1つのリデュース・タスク内で集計されます。(「分割方法の選択」に説明されているように、リデュース・タスク全体のリデュース・キーの値をソートできます。)
完全な集計が必要な場合、分割を無効にできます。MapReduceジョブの出力を使用するアプリケーションを調べることもできます。アプリケーションは部分集計に適している場合があります。
たとえば、検索エンジンは転置インデックスを作成するMapReduceジョブから出力をパラレルに読み取る場合があります。リデュース・タスクの出力は単語のリストであり、単語ごとに、その単語が発生するドキュメントのリストです。単語はキーであり、ドキュメントのリストは値です。部分集計を使用すると、一部の単語には集計されたリストではなく複数のドキュメント・リストが含まれます。複数のリストは、検索エンジンがパラレルに使用するのに役立ちます。パラレル検索エンジンでは、1つのリストに集計するのではなくドキュメント・リストを分割する必要がある場合もあります。ドキュメント・コレクションから転置インデックスを作成するHadoopジョブは、「Perfect Balanceの例について」を参照してください。
別の例として、Oracle Loader for Hadoopはデータを複数のファイルからターゲット表の正しいパーティションにロードします。リデュース・キーの複数のファイルがある場合、ロード・ステップは高速になります。これは、リデュース・キーの1つのファイルからロードする場合よりもより高度な並列化が可能になるためです。