@Override
public RecordMaterializer<GenericRecord> prepareForRead(
Configuration configuration,
Map<String, String> keyValueMetaData,
MessageType fileSchema,
ReadContext readContext
)
{
String jobProp = "parquet.avro.add-list-element-records";
Boolean explicitlySet = configuration.getBoolean(jobProp, false);
if (!explicitlySet) {
configuration.setBoolean(jobProp, false);
}
MessageType parquetSchema = readContext.getRequestedSchema();
Schema avroSchema = new AvroSchemaConverter(configuration).convert(parquetSchema);
Class<? extends AvroDataSupplier> suppClass = configuration.getClass(
AVRO_DATA_SUPPLIER,
SpecificDataSupplier.class,
AvroDataSupplier.class
);
AvroDataSupplier supplier = ReflectionUtils.newInstance(suppClass, configuration);
return new AvroRecordMaterializer<>(parquetSchema, avroSchema, supplier.get());
}
}