Pouvez-vous ajouter des données à un fichier de données Avro existant?

StackOverflow https://stackoverflow.com/questions/8806689

  •  26-10-2019
  •  | 
  •  

Question

Il semble qu'il n'y ait aucun moyen d'ajouter des données à un fichier sérialisé Avro existant. Je voudrais avoir de multiples processus d'écriture sur un seul fichier Avro, mais il semble que chaque fois que je l'ouvre, je commence à zéro. Je ne veux pas lire dans toutes les données et le réécrire à nouveau.

En utilisant le code d'exemple rubis j'ai essayé « ab » et « ab + » que divers paramètres, mais pas de joie.

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
Était-ce utile?

La solution

ne passent pas le schéma à ajouter au fichier

Autres conseils

Je l'ai fait comprendre comment le faire en Java en utilisant la méthode 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"));

Cependant, j'aimerais faire de Ruby.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top