Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

...