@Override protected void reduce(Text key, Iterable<PartialGradientDescentWritable> values, Context context) throws IOException, InterruptedException { Iterator<PartialGradientDescentWritable> iterator = values.iterator(); int m = 0; double sum0 = 0; double sum1 = 0; //Summing all partial gradients received from Mappers while(iterator.hasNext()) { PartialGradientDescentWritable customWritable = iterator.next(); sum0 += customWritable.getSum0(); sum1 += customWritable.getSum1(); m += customWritable.getCount(); } //updating thetas double theta0 = theta[0] - (alpha*sum0)/m; double theta1 = theta[1] - (alpha*sum1)/m; String outputText = theta0 + "," + theta1; context.write(new Text("new-theta:"), new Text(outputText)); }