@Override
  public void map(ImmutableBytesWritable key, Result value, Context context)
    throws IOException, InterruptedException {
    byte[][] keyVals = extractKeyValues(value);
    if (keyVals != null) {
      ImmutableBytesWritable tKey = createGroupKey(keyVals);
      context.write(tKey, value);
    }
  }
Extract the grouping columns from value to construct a new key. Pass the new key and value to
reduce. If any of the grouping columns are not found in the value, the record is skipped.
@param key     The current key.
@param value   The current value.
@param context The current context.
@throws IOException          When writing the record fails.
@throws InterruptedException When the job is aborted.
hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/GroupingTableMapper.java