Si può aggiungere dati a un file di dati Avro esistenti?
-
26-10-2019 - |
Domanda
Sembra che non ci sia alcun modo per aggiungere dati a un file esistente Avro serializzato. Mi piacerebbe avere più processi di scrittura in un singolo file Avro, ma sembra che ogni volta che l'apro, mi ricominciare da zero. Non voglio leggere in tutti i dati e poi scrivere di nuovo fuori di nuovo.
utilizzando il codice di esempio rubino ho cercato "ab" e "ab +", come le varie impostazioni, ma nessuna gioia.
file = File.open('data.avr', 'wb')
schema = Avro::Schema.parse(SCHEMA)
writer = Avro::IO::DatumWriter.new(schema)
dw = Avro::DataFile::Writer.new(file, writer, schema)
dw << {"username" => "john", "age" => 25, "verified" => true}
dw << {"username" => "ryan", "age" => 23, "verified" => false}
dw.close
Soluzione
Non passa lo schema da aggiungere al file
Altri suggerimenti
ho fatto capire come farlo in Java utilizzando il metodo appendTo:
DatumWriter writer = new ReflectDatumWriter(Record.class);
DataFileWriter file = new DataFileWriter(writer);
file.setMeta("version", 1);
file.setMeta("creator", "ThinkBigAnalytics");
file.setCodec(CodecFactory.deflateCodec(5));
//file.create(schema, new File("/tmp/records"));
file.appendTo(new File("/tmp/records"));
Tuttavia, mi piacerebbe farlo da Ruby.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow