diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/vector/VectorizedParquetRecordReader.java b/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/vector/VectorizedParquetRecordReader.java index 0977759..5c1bcbd 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/vector/VectorizedParquetRecordReader.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/vector/VectorizedParquetRecordReader.java @@ -52,6 +52,8 @@ import org.apache.parquet.hadoop.ParquetFileReader; import org.apache.parquet.hadoop.ParquetFileWriter; import org.apache.parquet.hadoop.ParquetInputSplit; +import org.apache.parquet.hadoop.api.InitContext; +import org.apache.parquet.hadoop.api.ReadSupport; import org.apache.parquet.hadoop.metadata.BlockMetaData; import org.apache.parquet.hadoop.metadata.ColumnChunkMetaData; import org.apache.parquet.hadoop.metadata.ColumnPath; @@ -184,8 +186,6 @@ public void initialize( ParquetMetadata footer; List blocks; ParquetInputSplit split = (ParquetInputSplit) oldSplit; - boolean indexAccess = - configuration.getBoolean(DataWritableReadSupport.PARQUET_COLUMN_INDEX_ACCESS, false); this.file = split.getPath(); long[] rowGroupOffsets = split.getRowGroupOffsets(); @@ -254,29 +254,11 @@ public void initialize( } this.fileSchema = footer.getFileMetaData().getSchema(); - MessageType tableSchema; - if (indexAccess) { - List indexSequence = new ArrayList<>(); - - // Generates a sequence list of indexes - for(int i = 0; i < columnNamesList.size(); i++) { - indexSequence.add(i); - } - - tableSchema = DataWritableReadSupport.getSchemaByIndex(fileSchema, columnNamesList, - indexSequence); - } else { - tableSchema = DataWritableReadSupport.getSchemaByName(fileSchema, columnNamesList, - columnTypesList); - } + final ReadSupport.ReadContext readContext = + new DataWritableReadSupport().init(new InitContext(jobConf, null, fileSchema)); indexColumnsWanted = ColumnProjectionUtils.getReadColumnIDs(configuration); - if (!ColumnProjectionUtils.isReadAllColumns(configuration) && !indexColumnsWanted.isEmpty()) { - requestedSchema = - DataWritableReadSupport.getSchemaByIndex(tableSchema, columnNamesList, indexColumnsWanted); - } else { - requestedSchema = fileSchema; - } + requestedSchema = readContext.getRequestedSchema(); Path path = wrapPathForCache(file, cacheKey, configuration, blocks); this.reader = new ParquetFileReader(