예제 #1
0
 /**
  * Sets the Reducer class to the chain job's JobConf.
  *
  * <p>It has to be specified how key and values are passed from one element of the chain to the
  * next, by value or by reference. If a Reducer leverages the assumed semantics that the key and
  * values are not modified by the collector 'by value' must be used. If the Reducer does not
  * expect this semantics, as an optimization to avoid serialization and deserialization 'by
  * reference' can be used.
  *
  * <p>For the added Reducer the configuration given for it, <code>reducerConf</code>, have
  * precedence over the job's JobConf. This precedence is in effect when the task is running.
  *
  * <p>IMPORTANT: There is no need to specify the output key/value classes for the ChainReducer,
  * this is done by the setReducer or the addMapper for the last element in the chain.
  *
  * @param job job's JobConf to add the Reducer class.
  * @param klass the Reducer class to add.
  * @param inputKeyClass reducer input key class.
  * @param inputValueClass reducer input value class.
  * @param outputKeyClass reducer output key class.
  * @param outputValueClass reducer output value class.
  * @param byValue indicates if key/values should be passed by value to the next Mapper in the
  *     chain, if any.
  * @param reducerConf a JobConf with the configuration for the Reducer class. It is recommended to
  *     use a JobConf without default values using the <code>JobConf(boolean loadDefaults)</code>
  *     constructor with FALSE.
  */
 public static <K1, V1, K2, V2> void setReducer(
     JobConf job,
     Class<? extends Reducer<K1, V1, K2, V2>> klass,
     Class<? extends K1> inputKeyClass,
     Class<? extends V1> inputValueClass,
     Class<? extends K2> outputKeyClass,
     Class<? extends V2> outputValueClass,
     boolean byValue,
     JobConf reducerConf) {
   job.setReducerClass(ChainReducer.class);
   job.setOutputKeyClass(outputKeyClass);
   job.setOutputValueClass(outputValueClass);
   Chain.setReducer(
       job,
       klass,
       inputKeyClass,
       inputValueClass,
       outputKeyClass,
       outputValueClass,
       byValue,
       reducerConf);
 }