private static RecordReader<NullWritable, VectorizedRowBatch> parquetRecordReader(JobConf job, Reporter reporter,
      FileScanTask task, Path path, long start, long length, SyntheticFileId fileId) throws IOException {
    InputSplit split = new FileSplit(path, start, length, job);
    VectorizedParquetInputFormat inputFormat = new VectorizedParquetInputFormat();

    MemoryBufferOrBuffers footerData = null;
    if (HiveConf.getBoolVar(job, HiveConf.ConfVars.LLAP_IO_ENABLED, LlapProxy.isDaemon()) &&
        LlapProxy.getIo() != null && LlapProxy.getIo().usingLowLevelCache()) {
      LlapProxy.getIo().initCacheOnlyInputFormat(inputFormat);
      footerData = LlapProxy.getIo().getParquetFooterBuffersFromCache(path, job, fileId);
    }

    ParquetMetadata parquetMetadata = footerData != null ?
        ParquetFileReader.readFooter(new ParquetFooterInputFromCache(footerData), ParquetMetadataConverter.NO_FILTER) :
        ParquetFileReader.readFooter(job, path);
    inputFormat.setMetadata(parquetMetadata);

    MessageType fileSchema = parquetMetadata.getFileMetaData().getSchema();
    MessageType typeWithIds = null;
    Schema expectedSchema = task.spec().schema();

    if (ParquetSchemaUtil.hasIds(fileSchema)) {
      typeWithIds = ParquetSchemaUtil.pruneColumns(fileSchema, expectedSchema);
    } else {
      typeWithIds = ParquetSchemaUtil.pruneColumnsFallback(ParquetSchemaUtil.addFallbackIds(fileSchema),
          expectedSchema);
    }

    ParquetSchemaFieldNameVisitor psv = new ParquetSchemaFieldNameVisitor(fileSchema);
    TypeWithSchemaVisitor.visit(expectedSchema.asStruct(), typeWithIds, psv);
    job.set(IOConstants.COLUMNS, psv.retrieveColumnNameList());

    return inputFormat.getRecordReader(split, job, reporter);
  }
Utility class to create vectorized readers for Hive.
As per the file format of the task, it will create a matching vectorized record reader that is already implemented
in Hive. It will also do some tweaks on the produced vectors for Iceberg's use e.g. partition column handling.
iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/vector/HiveVectorizedReader.java