public void loadRanges(DiskRangeList ranges) throws IOException {
    boolean useZeroCopy = (daemonConf != null) && OrcConf.USE_ZEROCOPY.getBoolean(daemonConf);
    InStream.StreamOptions options = InStream.options()
        .withCodec(OrcCodecPool.getCodec(orcReader.getCompressionKind()))
        .withBufferSize(orcReader.getCompressionSize());

    rawDataReader = LlapRecordReaderUtils.createDefaultLlapDataReader(
        DataReaderProperties.builder()
            .withFileSystemSupplier(fsSupplier).withPath(path)
            .withCompression(options)
            .withZeroCopy(useZeroCopy)
            .build());
    rawDataReader.open();

    IoTrace ioTrace = tracePool.take();

    try {
      // Currently no thread pooling is used. Pre loading the cache doesn't have that much priority,
      // and the whole preRead will be running in a single separate thread.
      encodedReader = orcReader.encodedReader(fileKey, cache, rawDataReader, null, ioTrace, false, cacheTag, false);
      encodedReader.preReadDataRanges(ranges);
    } finally {
      tracePool.offer(ioTrace);
    }
  }
Pre read the provided ranges into the cache.
llap-server/src/java/org/apache/hadoop/hive/llap/io/encoded/LlapOrcCacheLoader.java