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); } }
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); } }