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
È stato utile?

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
scroll top