@Override
    public boolean nextKeyValue() throws IOException, InterruptedException {
      boolean hasNext;
      if (!seeked) {
        LOG.info("Seeking to start");
        hasNext = scanner.seekTo();
        seeked = true;
      } else {
        hasNext = scanner.next();
      }
      if (!hasNext) {
        return false;
      }
      value = scanner.getCell();
      if (value != null && bulkloadSeqId.isPresent()) {
        PrivateCellUtil.setSequenceId(value, bulkloadSeqId.getAsLong());
      }
      count++;
      return true;
    }
A private cache of the key value so it doesn't need to be loaded twice from the scanner.
hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/HFileInputFormat.java