/** * SumCombiner.java */ package com.chinamobile.bcbsp.examples.pagerank; import java.util.Iterator; import com.chinamobile.bcbsp.api.Combiner; import com.chinamobile.bcbsp.comm.BSPMessage; /** * SumCombiner * An example implementation of combiner, * to sum the data of all messages sent * to the same destination vertex, and * return only one message. * * @author Bai Qiushi * @version 0.1 */ public class SumCombiner extends Combiner { /* (non-Javadoc) * @see com.chinamobile.bcbsp.api.Combiner#combine(java.util.Iterator) */ @Override public BSPMessage combine(Iterator<BSPMessage> messages) { BSPMessage msg; double sum = 0.0; do { msg = messages.next(); String tmpValue = new String(msg.getData()); sum = sum + Double.parseDouble(tmpValue); } while (messages.hasNext()); String newData = Double.toString(sum); msg = new BSPMessage(msg.getDstPartition(), msg.getDstVertexID(), newData.getBytes()); return msg; } }