似乎没有任何方法可以将数据附加到现有的AVRO序列化文件中。我想将多个流程写入一个AVRO文件,但是看起来每次打开它时,我都会从头开始。我不想阅读所有数据,然后再将其写回。

使用Ruby示例代码,我尝试了“ AB”和“ AB+”作为各种设置,但没有喜悦。

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
有帮助吗?

解决方案

不要传递模式以附加到文件

其他提示

我确实使用附录方法弄清楚了如何在Java中进行操作:

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"));

但是,我很想从Ruby那里做。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top