Example #1
0
        public override void Reduce(string key, IEnumerable <string> lines, ReducerCombinerContext context)
        {
            double TREND_IMPORTANCE = 0;
            var    countriesScores  = new List <CountryScore>();
            var    indicatorConf    = new IndicatorSettings();
            double sum = 0;

            foreach (var line in lines)
            {
                var data       = new CountryScore();
                var dataString = line.Split('\t');
                data.CountryName   = dataString[1];
                data.CountryCode   = dataString[0];
                data.Trend         = Double.Parse(dataString[2]);
                data.OriginalValue = Double.Parse(dataString[3]);

                sum += data.OriginalValue;
                countriesScores.Add(data);
            }
            //smothen the values distribution along the mean by 1/3

            var avg = sum / countriesScores.Count();

            foreach (var val in countriesScores)
            {
                val.Value = val.OriginalValue + (avg - val.OriginalValue) / 2;
                val.Value = indicatorConf.AdjustValue(key, val.Value, val.Trend * TREND_IMPORTANCE);
                // context.EmitKeyValue(val.CountryCode, key + '\t' + val.Value + "\t val=" + val.OriginalValue);
                context.EmitKeyValue(val.CountryCode, val.CountryName + '\t' + val.Value + "\t" + val.OriginalValue + "\t" + key);
            }
        }
Example #2
0
        public override void Reduce(string key, IEnumerable<string> lines, ReducerCombinerContext context)
        {
            double TREND_IMPORTANCE = 0;
            var countriesScores = new List<CountryScore>();
            var indicatorConf = new IndicatorSettings();
            double sum = 0;
            
            foreach (var line in lines)
            {
                var data = new CountryScore();
                var dataString = line.Split('\t');
                data.CountryName = dataString[1];
                data.CountryCode = dataString[0];
                data.Trend = Double.Parse(dataString[2]);
                data.OriginalValue = Double.Parse(dataString[3]);

                sum += data.OriginalValue;
                countriesScores.Add(data);
            }
            //smothen the values distribution along the mean by 1/3
            
                var avg = sum / countriesScores.Count();
           
             foreach (var val in countriesScores)
             {
                 val.Value = val.OriginalValue + (avg - val.OriginalValue) / 2;
                 val.Value = indicatorConf.AdjustValue(key, val.Value, val.Trend*TREND_IMPORTANCE);
                // context.EmitKeyValue(val.CountryCode, key + '\t' + val.Value + "\t val=" + val.OriginalValue);
                 context.EmitKeyValue(val.CountryCode,  val.CountryName + '\t' + val.Value + "\t" + val.OriginalValue+"\t"+key);
                
             }



        }