diff --git ql/src/java/org/apache/hadoop/hive/ql/io/parquet/read/DataWritableReadSupport.java ql/src/java/org/apache/hadoop/hive/ql/io/parquet/read/DataWritableReadSupport.java index d6be4bd..e219319 100644 --- ql/src/java/org/apache/hadoop/hive/ql/io/parquet/read/DataWritableReadSupport.java +++ ql/src/java/org/apache/hadoop/hive/ql/io/parquet/read/DataWritableReadSupport.java @@ -160,7 +160,15 @@ private MessageType resolveSchemaAccess(MessageType requestedSchema, MessageType List requestedTypes = new ArrayList(); for(Type t : requestedSchema.getFields()) { int index = listColumns.indexOf(t.getName()); - requestedTypes.add(fileSchema.getType(index)); + + //Take columns based on index or pad the field as done in init() + //prefixing with '_mask_' to ensure no conflict with named + //columns in the file schema + if(index != -1 && index < fileSchema.getFieldCount()) { + requestedTypes.add(fileSchema.getType(index)); + } else { + requestedTypes.add(new PrimitiveType(Repetition.OPTIONAL, PrimitiveTypeName.BINARY, "_mask_"+t.getName())); + } } requestedSchema = new MessageType(requestedSchema.getName(), requestedTypes); }