题
似乎没有任何方法可以将数据附加到现有的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那里做。
不隶属于 StackOverflow