package com.github.stakafum.mapreduce.KMeans; import com.github.stakafum.mapreduce.Reducer; public class ReduceKM extends Reducer<VectorKM, VectorKM, VectorKM, VectorKM>{ /** * Kmeansのmap処理を行うメソッド * 1.クラスタ内の座標から新しい重点を求める * 2.キーを現在のクラスタの重点の座標、バリューを新しいクラスタの重点の座標としてemit関数にわたす */ @Override protected void reduce() { // TODO Auto-generated method stub float sumX = 0; float sumY = 0; float valuenum = (float)this.getInputValue().getSize(); for(VectorKM vkm : this.getInputValue()){ sumX += vkm.getX(); sumY += vkm.getY(); } emit(this.getInputKey(), new VectorKM(sumX / valuenum, sumY / valuenum)); } }