皮尔逊相关系数mapreduce实现

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

 }

猜你喜欢

转载自blog.csdn.net/weixin_40988315/article/details/82110886