[Tips] ドライバでReducerを指定しなかったら?

トレーニングをやっていると、やさしいものから超絶難しいものまでいろんな質問がやってきます。
以下、調べたものをシェアします。
今回はMapReduce編:
Q. reduceの数を0に指定した場合、reducerは呼ばれるのか?
A. -D mapred.reduce.tasks=0などを使用してreduce数をゼロに指定した場合、
 reduceタスクが実行されることはありません。
Q.ドライバーコードでreducerを指定しない場合は何が呼ばれる?
A.reducerをドライバーコードに記述しなかった場合、newAPIでは
 org.apache.hadoop.mapreduce.Reducer.javaのデフォルトのreduce()が呼ばれます。
 以下のように、コメントには identity function と書かれています。
[java]
 /**
* This method is called once for each key. Most applications will define
* their reduce class by overriding this method. The default implementation
* is an identity function.
*/
@SuppressWarnings(“unchecked”)
protected void reduce(KEYIN key, Iterable values, Context context
) throws IOException, InterruptedException {
for(VALUEIN value: values) {
context.write((KEYOUT) key, (VALUEOUT) value);
}
}
[/java]
 old APIでは、org.apache.hadoop.mapred.JobConf.JavaのgetReducerClass()でデフォルトのクラスをIdentityReducer.classと設定しています。
[java]
  /**
* Get the {@link Reducer} class for the job.
*
* @return the {@link Reducer} class for the job.
*/
public Class getReducerClass() {
return getClass(“mapred.reducer.class”,
IdentityReducer.class, Reducer.class);
}
[/java]
オープンソース万歳!(?)