@SuppressWarnings("deprecation")
  protected ParquetInputSplit getSplit(
    final JobConf conf
  ) throws IOException {

    ParquetInputSplit split;
    final Path finalPath = fileSplit.getPath();

    // TODO enable MetadataFilter by using readFooter(Configuration configuration, Path file,
    // MetadataFilter filter) API
    final List<BlockMetaData> blocks = parquetMetadata.getBlocks();
    final FileMetaData fileMetaData = parquetMetadata.getFileMetaData();

    final ReadSupport.ReadContext
      readContext = new DataWritableReadSupport().init(new InitContext(jobConf,
      null, fileMetaData.getSchema()));

    // Compute stats
    for (BlockMetaData bmd : blocks) {
      serDeStats.setRowCount(serDeStats.getRowCount() + bmd.getRowCount());
      serDeStats.setRawDataSize(serDeStats.getRawDataSize() + bmd.getTotalByteSize());
    }

    schemaSize = MessageTypeParser.parseMessageType(readContext.getReadSupportMetadata()
      .get(DataWritableReadSupport.HIVE_TABLE_AS_PARQUET_SCHEMA)).getFieldCount();
    final List<BlockMetaData> splitGroup = new ArrayList<BlockMetaData>();
    final long splitStart = fileSplit.getStart();
    final long splitLength = fileSplit.getLength();
    for (final BlockMetaData block : blocks) {
      final long firstDataPage = block.getColumns().get(0).getFirstDataPageOffset();
      if (firstDataPage >= splitStart && firstDataPage < splitStart + splitLength) {
        splitGroup.add(block);
      }
    }
    if (splitGroup.isEmpty()) {
      LOG.warn("Skipping split, could not find row group in: " + fileSplit);
      return null;
    }

    FilterCompat.Filter filter = setFilter(jobConf, fileMetaData.getSchema());
    if (filter != null) {
      filteredBlocks = RowGroupFilter.filterRowGroups(filter, splitGroup, fileMetaData.getSchema());
      if (filteredBlocks.isEmpty()) {
        LOG.debug("All row groups are dropped due to filter predicates");
        return null;
      }

      long droppedBlocks = splitGroup.size() - filteredBlocks.size();
      if (droppedBlocks > 0) {
        LOG.debug("Dropping " + droppedBlocks + " row groups that do not pass filter predicate");
      }
    } else {
      filteredBlocks = splitGroup;
    }

    if (HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_PARQUET_TIMESTAMP_SKIP_CONVERSION)) {
      skipTimestampConversion = !Strings.nullToEmpty(fileMetaData.getCreatedBy()).startsWith("parquet-mr");
    }
    skipProlepticConversion = DataWritableReadSupport
        .getWriterDateProleptic(fileMetaData.getKeyValueMetaData());
    if (skipProlepticConversion == null) {
      skipProlepticConversion = HiveConf.getBoolVar(
          conf, HiveConf.ConfVars.HIVE_PARQUET_DATE_PROLEPTIC_GREGORIAN_DEFAULT);
    }
      legacyConversionEnabled =
          DataWritableReadSupport.getZoneConversionLegacy(fileMetaData.getKeyValueMetaData(), conf);

    split = new ParquetInputSplit(finalPath,
      splitStart,
      splitLength,
      fileSplit.getLocations(),
      filteredBlocks,
      readContext.getRequestedSchema().toString(),
      fileMetaData.getSchema().toString(),
      fileMetaData.getKeyValueMetaData(),
      readContext.getReadSupportMetadata());
    return split;
  }
gets a ParquetInputSplit corresponding to a split given by Hive

@param conf The JobConf of the Hive job
@return a ParquetInputSplit corresponding to the oldSplit
@throws IOException if the config cannot be enhanced or if the footer cannot be read from the file
ql/src/java/org/apache/hadoop/hive/ql/io/parquet/ParquetRecordReaderBase.java