Pouvez-vous ajouter des données à un fichier de données Avro existant?
-
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
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