主キーが異なるレコードを、それぞれ異なるReduceタスクへ振り分ける方法です。各Reduceタスクは1種類の主キーしか処理しないことが保障されるため、複数の主キーグループを処理できないアプリケーションに対して有効です。
この振り分け方法を利用するためには、以下の3つの手順が必要です。
あらかじめ、Hadoop入力データファイルに含まれる主キーを主キー一覧ファイルに定義します。
主キー一覧ファイルをMapReduce設定ファイルの「主キー一覧ファイルの指定」に指定します。
MapReduce設定ファイルに「一意振り分けの指定」を行います。
注意
主キー一覧ファイルに含まれない主キーを持つレコードはすべて11.7.4.3 スペアReduceタスクに割り振られるため、スペアReduceタスクに割り振られるレコードは一意のキーにはなりません。
Hadoop入力ファイルに含まれる主キーに対応するReduceタスク数にスペアReduceタスクとして1を加えた値が、実行可能なReduceタスク数(mapred.reduce.tasks)になります。このため、MapReduce設定ファイルにReduceタスク数(mapred.reduce.tasks)を指定している場合、その値は無視されます。
想定外のタスク数が実行されることを防止するため、振り分け可能なキーの上限数が規定されています。上限数を引き上げるためには、MapReduce設定ファイルの「一意振り分けにおけるキーの上限数の指定」を行います。