if (inputs.size() <= 0 || inputs.size() > 1) {
throw new IOException("Invalid number of inputs"
+ ", inputCount=" + inputs.size());
}
LogicalInput in = inputs.values().iterator().next();
LogicalOutput out = outputs.values().iterator().next();
this.statusUpdate();
Class keyClass = ConfigUtils.getIntermediateInputKeyClass(jobConf);
Class valueClass = ConfigUtils.getIntermediateInputValueClass(jobConf);
LOG.info("Using keyClass: " + keyClass);
LOG.info("Using valueClass: " + valueClass);
RawComparator comparator =
ConfigUtils.getInputKeySecondaryGroupingComparator(jobConf);
LOG.info("Using comparator: " + comparator);
reduceInputKeyCounter =
mrReporter.getCounter(TaskCounter.REDUCE_INPUT_GROUPS);
reduceInputValueCounter =
mrReporter.getCounter(TaskCounter.REDUCE_INPUT_RECORDS);
// Sanity check
if (!(in instanceof ShuffledMergedInputLegacy)) {
throw new IOException("Illegal input to reduce: " + in.getClass());
}
ShuffledMergedInputLegacy shuffleInput = (ShuffledMergedInputLegacy)in;
KeyValuesReader kvReader = shuffleInput.getReader();
KeyValueWriter kvWriter = null;
if((out instanceof MROutput)) {
kvWriter = ((MROutput) out).getWriter();
} else if ((out instanceof OnFileSortedOutput)) {
kvWriter = ((OnFileSortedOutput) out).getWriter();
} else {
throw new IOException("Illegal input to reduce: " + in.getClass());
}
if (useNewApi) {
try {
runNewReducer(