@Override
    public void map(WALKey key, WALEdit value, Context context) throws IOException {
      try {
        // skip all other tables
        TableName table = key.getTableName();
        if (tableSet.contains(table.getNameAsString())) {
          for (Cell cell : value.getCells()) {
            if (WALEdit.isMetaEditFamily(cell)) {
              continue;
            }

            // Set sequenceId from WALKey, since it is not included by WALCellCodec. The sequenceId
            // on WALKey is the same value that was on the cells in the WALEdit. This enables
            // CellSortReducer to use sequenceId to disambiguate duplicate cell timestamps.
            // See HBASE-27649
            PrivateCellUtil.setSequenceId(cell, key.getSequenceId());

            byte[] outKey = multiTableSupport
              ? Bytes.add(table.getName(), Bytes.toBytes(tableSeparator), CellUtil.cloneRow(cell))
              : CellUtil.cloneRow(cell);
            context.write(new ImmutableBytesWritable(outKey),
              new MapReduceExtendedCell(PrivateCellUtil.ensureExtendedCell(cell)));
          }
        }
      } catch (InterruptedException e) {
        LOG.error("Interrupted while emitting Cell", e);
        Thread.currentThread().interrupt();
      }
    }
A mapper that just writes out KeyValues. This one can be used together with
{@link CellSortReducer}
hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/WALPlayer.java