/// <exception cref="System.IO.IOException"/> private void CombineAndSpill(RawKeyValueIterator kvIter, Counters.Counter inCounter ) { JobConf job = jobConf; Reducer combiner = ReflectionUtils.NewInstance(combinerClass, job); Type keyClass = (Type)job.GetMapOutputKeyClass(); Type valClass = (Type)job.GetMapOutputValueClass(); RawComparator <K> comparator = (RawComparator <K>)job.GetCombinerKeyGroupingComparator (); try { Task.CombineValuesIterator values = new Task.CombineValuesIterator(kvIter, comparator , keyClass, valClass, job, Reporter.Null, inCounter); while (values.More()) { combiner.Reduce(values.GetKey(), values, combineCollector, Reporter.Null); values.NextKey(); } } finally { combiner.Close(); } }
/// <summary> /// Get the user defined /// <see cref="Org.Apache.Hadoop.IO.RawComparator{T}"/> /// comparator for /// grouping keys of inputs to the combiner. /// </summary> /// <returns>comparator set by the user for grouping values.</returns> /// <seealso cref="Org.Apache.Hadoop.Mapreduce.Job.SetCombinerKeyGroupingComparatorClass(System.Type{T}) /// ">for details.</seealso> public virtual RawComparator <object> GetCombinerKeyGroupingComparator() { return(conf.GetCombinerKeyGroupingComparator()); }