@Override public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) { // This serializes the Map. The format is as follows // Map size(VInt ie. 1 to 5 bytes) + // ( key length [VInt ie. 1 to 5 bytes] + key bytes + value [VInt ie. 1 to 5 bytes] )* buffer = new byte[countMapSerializationSize()]; int offset = 0; offset += ByteUtil.vintToBytes(buffer, offset, this.valueVsCount.size()); for (Entry<ImmutableBytesPtr, Integer> entry : this.valueVsCount.entrySet()) { ImmutableBytesPtr key = entry.getKey(); offset += ByteUtil.vintToBytes(buffer, offset, key.getLength()); System.arraycopy(key.get(), key.getOffset(), buffer, offset, key.getLength()); offset += key.getLength(); offset += ByteUtil.vintToBytes(buffer, offset, entry.getValue().intValue()); } ptr.set(buffer, 0, offset); return true; }