@Override
    public WritableMonoid getCurrentValue() throws IOException, InterruptedException {

      Text tValue = reader.getCurrentValue();
      WritableMonoid value = monoid.neutral();
      value.fromText(tValue);
      return value;
    }
 @Override
 public boolean nextKeyValue() throws IOException, InterruptedException {
   return reader.nextKeyValue();
 }
 @Override
 public void initialize(InputSplit split, TaskAttemptContext context)
     throws IOException, InterruptedException {
   reader.initialize(split, context);
 }
 @Override
 public float getProgress() throws IOException, InterruptedException {
   return reader.getProgress();
 }
 @Override
 public void close() throws IOException {
   reader.close();
 }
    @Override
    public RangeWritable getCurrentKey() throws IOException, InterruptedException {

      String sKey = reader.getCurrentKey().toString();
      Scanner scanner = new Scanner(sKey);
      return new RangeWritable(scanner.nextLong(), scanner.nextLong());
    }