package samples;
import java.io.File;
import java.text.DecimalFormat;
import java.util.Random;
import water.*;
import water.fvec.*;
import water.util.Utils;
/**
* Simplified version of H2O k-means algorithm for better readability.
*/
public class Sample05_Sum {
public static void main(String[] args) throws Exception {
water.Boot.main(UserCode.class, args);
}
public static class UserCode {
public static void userMain(String[] args) throws Exception {
H2O.main(args);
// Load and parse a file. Data is distributed to other nodes in a round-robin way
Key file = NFSFileVec.make(new File("lib/resources/datasets/gaussian.csv"));
Frame frame = ParseDataset2.parse(Key.make("test"), new Key[] { file });
Sum task = new Sum();
task.doAll(frame);
System.out.println("Sum is " + task.getSum());
System.exit(0);
}
}
public static class Sum extends MRTask2<Sum> {
private double _totalSum;
private double _partialSum;
double getSum() { return _totalSum; }
@Override public void map(Chunk[] chunks) {
// Find nearest cluster for each row
_partialSum = 0;
for( int row = 0; row < chunks[0]._len; row++ ) {
double value = chunks[0].at0(row);
_partialSum += value;
}
_totalSum += _partialSum;
}
@Override public void reduce(Sum rhs) {
_totalSum += rhs._totalSum;
}
}
}