/// <summary>Combines values for a given key.</summary>
        /// <param name="key">
        /// the key is expected to be a Text object, whose prefix indicates
        /// the type of aggregation to aggregate the values.
        /// </param>
        /// <param name="values">the values to combine</param>
        /// <param name="context">to collect combined values</param>
        /// <exception cref="System.IO.IOException"/>
        /// <exception cref="System.Exception"/>
        protected internal override void Reduce(Text key, IEnumerable <Text> values, Reducer.Context
                                                context)
        {
            string keyStr    = key.ToString();
            int    pos       = keyStr.IndexOf(ValueAggregatorDescriptor.TypeSeparator);
            string type      = Sharpen.Runtime.Substring(keyStr, 0, pos);
            long   uniqCount = context.GetConfiguration().GetLong(UniqValueCount.MaxNumUniqueValues
                                                                  , long.MaxValue);
            ValueAggregator aggregator = ValueAggregatorBaseDescriptor.GenerateValueAggregator
                                             (type, uniqCount);

            foreach (Text val in values)
            {
                aggregator.AddNextValue(val);
            }
            IEnumerator <object> outputs = aggregator.GetCombinerOutput().GetEnumerator();

            while (outputs.HasNext())
            {
                object v = outputs.Next();
                if (v is Text)
                {
                    context.Write(key, (Text)v);
                }
                else
                {
                    context.Write(key, new Text(v.ToString()));
                }
            }
        }
Esempio n. 2
0
        /// <summary>Combines values for a given key.</summary>
        /// <param name="key">
        /// the key is expected to be a Text object, whose prefix indicates
        /// the type of aggregation to aggregate the values.
        /// </param>
        /// <param name="values">the values to combine</param>
        /// <param name="output">to collect combined values</param>
        /// <exception cref="System.IO.IOException"/>
        public override void Reduce(Text key, IEnumerator <Text> values, OutputCollector <Text
                                                                                          , Text> output, Reporter reporter)
        {
            string          keyStr     = key.ToString();
            int             pos        = keyStr.IndexOf(ValueAggregatorDescriptor.TypeSeparator);
            string          type       = Sharpen.Runtime.Substring(keyStr, 0, pos);
            ValueAggregator aggregator = ValueAggregatorBaseDescriptor.GenerateValueAggregator
                                             (type);

            while (values.HasNext())
            {
                aggregator.AddNextValue(values.Next());
            }
            IEnumerator outputs = aggregator.GetCombinerOutput().GetEnumerator();

            while (outputs.HasNext())
            {
                object v = outputs.Next();
                if (v is Text)
                {
                    output.Collect(key, (Text)v);
                }
                else
                {
                    output.Collect(key, new Text(v.ToString()));
                }
            }
        }
        /// <param name="type">the aggregation type</param>
        /// <returns>a value aggregator of the given type.</returns>
        public static ValueAggregator GenerateValueAggregator(string type)
        {
            ValueAggregator retv = null;

            if (type.CompareToIgnoreCase(LongValueSum) == 0)
            {
                retv = new LongValueSum();
            }
            if (type.CompareToIgnoreCase(LongValueMax) == 0)
            {
                retv = new LongValueMax();
            }
            else
            {
                if (type.CompareToIgnoreCase(LongValueMin) == 0)
                {
                    retv = new LongValueMin();
                }
                else
                {
                    if (type.CompareToIgnoreCase(StringValueMax) == 0)
                    {
                        retv = new StringValueMax();
                    }
                    else
                    {
                        if (type.CompareToIgnoreCase(StringValueMin) == 0)
                        {
                            retv = new StringValueMin();
                        }
                        else
                        {
                            if (type.CompareToIgnoreCase(DoubleValueSum) == 0)
                            {
                                retv = new DoubleValueSum();
                            }
                            else
                            {
                                if (type.CompareToIgnoreCase(UniqValueCount) == 0)
                                {
                                    retv = new UniqValueCount(maxNumItems);
                                }
                                else
                                {
                                    if (type.CompareToIgnoreCase(ValueHistogram) == 0)
                                    {
                                        retv = new ValueHistogram();
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(retv);
        }
Esempio n. 4
0
        private Range <IComparable> GetSizeDataRange()
        {
            IEnumerable <object> sizeValues = this.GetSizeValues((IEnumerable <DataPoint>) this.DataPointsByXValue);
            DataValueType        valueType  = this.ActualSizeValueType;

            if (valueType == DataValueType.Auto)
            {
                valueType = ValueHelper.GetDataValueType(sizeValues);
            }
            return(ValueAggregator.GetAggregator(valueType).GetRange(sizeValues));
        }
        /// <param name="key">
        /// the key is expected to be a Text object, whose prefix indicates
        /// the type of aggregation to aggregate the values. In effect, data
        /// driven computing is achieved. It is assumed that each aggregator's
        /// getReport method emits appropriate output for the aggregator. This
        /// may be further customiized.
        /// </param>
        /// <param name="values">the values to be aggregated</param>
        /// <exception cref="System.IO.IOException"/>
        public override void Reduce(Text key, IEnumerator <Text> values, OutputCollector <Text
                                                                                          , Text> output, Reporter reporter)
        {
            string keyStr = key.ToString();
            int    pos    = keyStr.IndexOf(ValueAggregatorDescriptor.TypeSeparator);
            string type   = Sharpen.Runtime.Substring(keyStr, 0, pos);

            keyStr = Sharpen.Runtime.Substring(keyStr, pos + ValueAggregatorDescriptor.TypeSeparator
                                               .Length);
            ValueAggregator aggregator = ValueAggregatorBaseDescriptor.GenerateValueAggregator
                                             (type);

            while (values.HasNext())
            {
                aggregator.AddNextValue(values.Next());
            }
            string val = aggregator.GetReport();

            key = new Text(keyStr);
            output.Collect(key, new Text(val));
        }
Esempio n. 6
0
        /// <param name="key">
        /// the key is expected to be a Text object, whose prefix indicates
        /// the type of aggregation to aggregate the values. In effect, data
        /// driven computing is achieved. It is assumed that each aggregator's
        /// getReport method emits appropriate output for the aggregator. This
        /// may be further customized.
        /// </param>
        /// <param name="values">the values to be aggregated</param>
        /// <param name="context"></param>
        /// <exception cref="System.IO.IOException"/>
        /// <exception cref="System.Exception"/>
        protected internal override void Reduce(Text key, IEnumerable <Text> values, Reducer.Context
                                                context)
        {
            string keyStr = key.ToString();
            int    pos    = keyStr.IndexOf(ValueAggregatorDescriptor.TypeSeparator);
            string type   = Sharpen.Runtime.Substring(keyStr, 0, pos);

            keyStr = Sharpen.Runtime.Substring(keyStr, pos + ValueAggregatorDescriptor.TypeSeparator
                                               .Length);
            long uniqCount = context.GetConfiguration().GetLong(UniqValueCount.MaxNumUniqueValues
                                                                , long.MaxValue);
            ValueAggregator aggregator = ValueAggregatorBaseDescriptor.GenerateValueAggregator
                                             (type, uniqCount);

            foreach (Text value in values)
            {
                aggregator.AddNextValue(value);
            }
            string val = aggregator.GetReport();

            key = new Text(keyStr);
            context.Write(key, new Text(val));
        }
Esempio n. 7
0
 internal virtual ValueAggregator CreateAggregator(DataValueType valueType)
 {
     return(ValueAggregator.GetAggregator(valueType));
 }