...
Combiner's usage can be seen in source code - CombinerExample.java, in which an user defined combiner - , SumCombiner - sum , sums up messages to be sent and add adds the result to BSPMessageBundle class. This decreases the total messages to just one IntegerMessage with a summary of all values.
No Format |
---|
public static class SumCombiner extends Combiner { @Override public BSPMessageBundle combine(Iterable<BSPMessage> messages) { BSPMessageBundle bundle = new BSPMessageBundle(); int sum = 0; Iterator<BSPMessage> it = messages.iterator(); while (it.hasNext()) { sum += ((IntegerMessage) it.next()).getData(); } bundle.addMessage(new IntegerMessage("Sum", sum)); return bundle; } } |
Combiner actually get gets called in sync function,
No Format |
---|
public void sync() throws IOException, SyncException, InterruptedException { ... final BSPMessageBundle bundle = combineMessages(messages); ... } |
...