Wie kann ich eine Teilmenge von Feldern aus einer Avro-Parkett-Datei in Java lesen?Wie lese ich bestimmte Felder aus der Avro-Parquet-Datei in Java?
Ich dachte, ich könnte ein AVRO-Schema definieren, die eine Teilmenge der gespeicherten Datensätze ist und dann lesen ... aber ich bekomme eine Ausnahme.
hier, wie ich versuchte, es zu lösen
Ich habe 2 Avro-Schemata:
- classA
- ClassB
Die Felder der Klasse B sind eine Untergruppe von KlasseA .
final Builder<ClassB> builder = AvroParquetReader.builder(files[0].getPath());
final ParquetReader<ClassB> reader = builder.build();
//AvroParquetReader<ClassA> readerA = new AvroParquetReader<ClassA>(files[0].getPath());
ClassB record = null;
final List<ClassB> list = new ArrayList<>();
while ((record = reader.read()) != null) {
list.add(record);
}
Aber ich bekomme ein ClassCastException
on line (record=reader.read())
: Cannot convert ClassA to ClassB
Ich nehme an dem Leser das Schema aus der Datei liest.
Ich habe versucht, das Modell (d. H. builder.withModel
) zu senden, aber seit KlasseB extends org.apache.avro.specific.SpecificRecordBase
löst es eine Ausnahme aus.
I Ereignis versucht, das Schema in der Konfiguration festgelegt und setzen Sie ihn durch builder.withConfig
aber keine Zigarre ...