Program: 61135
Project: 61135
Buggy source:
/** 
 * Maps the data.
 * @param row     The current table row key.
 * @param values  The columns.
 * @param context The current context.
 * @throws IOException When something is broken with the data.
 * @see org.apache.hadoop.mapreduce.Mapper#map(KEYIN,VALUEIN,org.apache.hadoop.mapreduce.Mapper.Context)
 */
@Override public void map(ImmutableBytesWritable row,Result values,Context context) throws IOException {
  Preconditions.checkState(values != null,"String_Node_Str");
  String currentFamilyName=null;
  String currentQualifierName=null;
  String currentRowKey=null;
  Configuration config=context.getConfiguration();
  String separator=config.get("String_Node_Str","String_Node_Str");
  try {
    context.getCounter(Counters.ROWS).increment(1);
    context.write(new Text("String_Node_Str"),new IntWritable(1));
    for (    Cell value : values.listCells()) {
      currentRowKey=Bytes.toStringBinary(CellUtil.cloneRow(value));
      String thisRowFamilyName=Bytes.toStringBinary(CellUtil.cloneFamily(value));
      if (!thisRowFamilyName.equals(currentFamilyName)) {
        currentFamilyName=thisRowFamilyName;
        context.getCounter("String_Node_Str",thisRowFamilyName).increment(1);
        if (1 == context.getCounter("String_Node_Str",thisRowFamilyName).getValue()) {
          context.write(new Text("String_Node_Str"),new IntWritable(1));
          context.write(new Text(thisRowFamilyName),new IntWritable(1));
        }
      }
      String thisRowQualifierName=thisRowFamilyName + separator + Bytes.toStringBinary(CellUtil.cloneQualifier(value));
      if (!thisRowQualifierName.equals(currentQualifierName)) {
        currentQualifierName=thisRowQualifierName;
        context.getCounter("String_Node_Str",thisRowQualifierName).increment(1);
        context.write(new Text("String_Node_Str"),new IntWritable(1));
        context.write(new Text(thisRowQualifierName),new IntWritable(1));
        context.getCounter("String_Node_Str",currentRowKey + separator + thisRowQualifierName).increment(1);
        context.write(new Text(currentRowKey + separator + thisRowQualifierName+ "String_Node_Str"),new IntWritable(1));
      }
 else {
        currentQualifierName=thisRowQualifierName;
        context.getCounter("String_Node_Str",currentRowKey + separator + thisRowQualifierName).increment(1);
        context.write(new Text(currentRowKey + separator + thisRowQualifierName+ "String_Node_Str"),new IntWritable(1));
      }
    }
  }
 catch (  InterruptedException e) {
    e.printStackTrace();
  }
}

Fixed version (ground truth):
/** 
 * Maps the data.
 * @param row     The current table row key.
 * @param values  The columns.
 * @param context The current context.
 * @throws IOException When something is broken with the data.
 * @see org.apache.hadoop.mapreduce.Mapper#map(KEYIN,VALUEIN,org.apache.hadoop.mapreduce.Mapper.Context)
 */
@Override public void map(ImmutableBytesWritable row,Result values,Context context) throws IOException {
  Preconditions.checkState(values != null,"String_Node_Str");
  String currentFamilyName=null;
  String currentQualifierName=null;
  String currentRowKey=null;
  Configuration config=context.getConfiguration();
  String separator=config.get("String_Node_Str","String_Node_Str");
  try {
    context.getCounter(Counters.ROWS).increment(1);
    context.write(new Text("String_Node_Str"),new IntWritable(1));
    if (values != null && !values.isEmpty()) {
      for (      Cell value : values.listCells()) {
        currentRowKey=Bytes.toStringBinary(CellUtil.cloneRow(value));
        String thisRowFamilyName=Bytes.toStringBinary(CellUtil.cloneFamily(value));
        if (!thisRowFamilyName.equals(currentFamilyName)) {
          currentFamilyName=thisRowFamilyName;
          context.getCounter("String_Node_Str",thisRowFamilyName).increment(1);
          if (1 == context.getCounter("String_Node_Str",thisRowFamilyName).getValue()) {
            context.write(new Text("String_Node_Str"),new IntWritable(1));
            context.write(new Text(thisRowFamilyName),new IntWritable(1));
          }
        }
        String thisRowQualifierName=thisRowFamilyName + separator + Bytes.toStringBinary(CellUtil.cloneQualifier(value));
        if (!thisRowQualifierName.equals(currentQualifierName)) {
          currentQualifierName=thisRowQualifierName;
          context.getCounter("String_Node_Str",thisRowQualifierName).increment(1);
          context.write(new Text("String_Node_Str"),new IntWritable(1));
          context.write(new Text(thisRowQualifierName),new IntWritable(1));
          context.getCounter("String_Node_Str",currentRowKey + separator + thisRowQualifierName).increment(1);
          context.write(new Text(currentRowKey + separator + thisRowQualifierName+ "String_Node_Str"),new IntWritable(1));
        }
 else {
          currentQualifierName=thisRowQualifierName;
          context.getCounter("String_Node_Str",currentRowKey + separator + thisRowQualifierName).increment(1);
          context.write(new Text(currentRowKey + separator + thisRowQualifierName+ "String_Node_Str"),new IntWritable(1));
        }
      }
    }
  }
 catch (  InterruptedException e) {
    e.printStackTrace();
  }
}