parquet-hive/parquet-hive-storage-handler/src/main/java/org/apache/hadoop/hive/ql/io/parquet/read/ParquetRecordReaderWrapper.java
protected ParquetInputSplit getSplit(
      final InputSplit oldSplit,
      final JobConf conf
      ) throws IOException {
    if (oldSplit instanceof FileSplit) {
      FileSplit fileSplit = (FileSplit) oldSplit;
      final long splitStart = fileSplit.getStart();
      final long splitLength = fileSplit.getLength();
      final Path finalPath = fileSplit.getPath();
      final JobConf cloneJob = hiveBinding.pushProjectionsAndFilters(conf, finalPath.getParent());

      final ParquetMetadata parquetMetadata = ParquetFileReader.readFooter(cloneJob, finalPath, SKIP_ROW_GROUPS);
      final FileMetaData fileMetaData = parquetMetadata.getFileMetaData();
      final ReadContext readContext =
          new DataWritableReadSupport()
            .init(cloneJob, fileMetaData.getKeyValueMetaData(), fileMetaData.getSchema());

      schemaSize = MessageTypeParser.parseMessageType(
            readContext.getReadSupportMetadata().get(DataWritableReadSupport.HIVE_SCHEMA_KEY)
          ).getFieldCount();
       return new ParquetInputSplit(
                finalPath,
                splitStart,
                splitStart + splitLength,
                splitLength,
                fileSplit.getLocations(),
                null);
    } else {
      throw new IllegalArgumentException("Unknown split type: " + oldSplit);
    }
  }
protected ParquetInputSplit getSplit(
      final InputSplit oldSplit,
      final JobConf conf
      ) throws IOException {
    if (oldSplit instanceof FileSplit) {
      FileSplit fileSplit = (FileSplit) oldSplit;
      final long splitStart = fileSplit.getStart();
      final long splitLength = fileSplit.getLength();
      final Path finalPath = fileSplit.getPath();
      final JobConf cloneJob = hiveBinding.pushProjectionsAndFilters(conf, finalPath.getParent());

      final ParquetMetadata parquetMetadata = ParquetFileReader.readFooter(cloneJob, finalPath, SKIP_ROW_GROUPS);
      final FileMetaData fileMetaData = parquetMetadata.getFileMetaData();
      final ReadContext readContext =
          new DataWritableReadSupport()
            .init(cloneJob, fileMetaData.getKeyValueMetaData(), fileMetaData.getSchema());

      schemaSize = MessageTypeParser.parseMessageType(
            readContext.getReadSupportMetadata().get(DataWritableReadSupport.HIVE_SCHEMA_KEY)
          ).getFieldCount();
       return new ParquetInputSplit(
                finalPath,
                splitStart,
                splitStart + splitLength,
                splitLength,
                fileSplit.getLocations(),
                null);
    } else {
      throw new IllegalArgumentException("Unknown split type: " + oldSplit);
    }
  }
protected ParquetInputSplit getSplit ( final InputSplit oldSplit , final JobConf conf ) throws IOException { if ( oldSplit instanceof FileSplit ) { FileSplit fileSplit = ( FileSplit ) oldSplit ; final long splitStart = fileSplit . getStart ( ) ; final long splitLength = fileSplit . getLength ( ) ; final Path finalPath = fileSplit . getPath ( ) ; final JobConf cloneJob = hiveBinding . pushProjectionsAndFilters ( conf , finalPath . getParent ( ) ) ; final ParquetMetadata parquetMetadata = ParquetFileReader . readFooter ( cloneJob , finalPath , SKIP_ROW_GROUPS ) ; final FileMetaData fileMetaData = parquetMetadata . getFileMetaData ( ) ; final ReadContext readContext = new DataWritableReadSupport ( ) . init ( cloneJob , fileMetaData . getKeyValueMetaData ( ) , fileMetaData . getSchema ( ) ) ; schemaSize = MessageTypeParser . parseMessageType ( readContext . getReadSupportMetadata ( ) . get ( DataWritableReadSupport . HIVE_SCHEMA_KEY ) ) . getFieldCount ( ) ; return new ParquetInputSplit ( finalPath , splitStart , splitStart + splitLength , splitLength , fileSplit . getLocations ( ) , null ) ; } else { throw new IllegalArgumentException ( "Unknown split type: " + oldSplit ) ; } }
gets a ParquetInputSplit corresponding to a split given by Hive

@param oldSplit The 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
gets a ParquetInputSplit corresponding to a split given by Hive