function Map() {
emit( this._id.P1,
{PROD : this._id.P2, VALORE : this.value, RANK1 : "", MAX1 : 0,RANK2 : "", MAX2 : 0,RANK3 : "", MAX3 : 0} );
emit( this._id.P2,
{PROD : this._id.P1, VALORE : this.value, RANK1 : "", MAX1 : 0,RANK2 : "", MAX2 : 0,RANK3 : "", MAX3 : 0} );
},
function Reduce(key, values) {
var MASSIMO = values[0] ;
values.forEach(function(val) {
if(val.VALORE > MASSIMO.MAX1)
{
MASSIMO.RANK3 = MASSIMO.RANK2;
MASSIMO.MAX3 = MASSIMO.MAX2;
MASSIMO.RANK2 = MASSIMO.RANK1;
MASSIMO.MAX2 = MASSIMO.MAX1;
MASSIMO.RANK1 = val.PROD;
MASSIMO.MAX1 = val.VALORE;
}
else if(val.VALORE > MASSIMO.MAX2)
{
MASSIMO.RANK3 = MASSIMO.RANK2;
MASSIMO.MAX3 = MASSIMO.MAX2;
MASSIMO.RANK2 = val.PROD;
MASSIMO.MAX2 = val.VALORE;
}
else if(val.VALORE > MASSIMO.MAX3)
{
MASSIMO.RANK3 = val.PROD;
MASSIMO.MAX3 = val.VALORE;
}
});
return MASSIMO;
}
Seems that the reduce function is called more times and not keeping the old values, and so some results are ok others completely incorrect
Probably i'm missing something on how map reduce work.