mapreduce框架
/key 由mapreduce生成,可忽略
value 矩阵中的一行
map(key,value){
double [] arr =line.split(",");
int size = arr.length;
for(int i =0; i<size-1;i++){
for (int j =i+1; j<size;j++){
reducekey=PairOfLongs(i,j);
reducevalue=PairOfDoubles(arr[i],arr[j]);
emit(reducekey,reducevalue);
}
}
}
reduce(PairOfLongs key, Iterable<PairOfDoubles> values) {
double x=0.0d
double y=0.0d
double xx=0.0d
double yy=0.0d
double xy=0.0d;
double n =0.0d;
for( PairOfDouble pair :values){
x +=pair.getLeftElement();
y +=pair.getRightElement();
xx +=Math.pow(pair.getLeftElement(),2.0d);
yy +=Math.pow(pair.getRightElement(),2.0d);
xy +=(pair.getLeftElement()*pair.getRightElement());
n +=1.0d;
}
PersonCompution person = new PersonCompution(x,y,xx,yy,xy,n);
emit(key,person);
}