@Override
  public RecordReader getRecordReader(InputSplit split, JobConf job,
      Reporter reporter) throws IOException {
    if (!(split instanceof CombineHiveInputSplit)) {
      return super.getRecordReader(split, job, reporter);
    }

    CombineHiveInputSplit hsplit = (CombineHiveInputSplit) split;

    String inputFormatClassName = null;
    Class inputFormatClass = null;
    try {
      inputFormatClassName = hsplit.inputFormatClassName();
      inputFormatClass = job.getClassByName(inputFormatClassName);
    } catch (Exception e) {
      throw new IOException("cannot find class " + inputFormatClassName);
    }

    pushProjectionsAndFiltersAndAsOf(job, hsplit.getPath(0));

    return ShimLoader.getHadoopShims().getCombineFileInputFormat()
        .getRecordReader(job,
        (CombineFileSplit) split, reporter,
        CombineHiveRecordReader.class);
  }
Create a generic Hive RecordReader than can iterate over all chunks in a
CombinedFileSplit.
ql/src/java/org/apache/hadoop/hive/ql/io/CombineHiveInputFormat.java