您可以将数据附加到现有的Avro数据文件吗?

时间:2012-01-10 16:26:33

标签: avro

似乎没有任何方法可以将数据附加到现有的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

2 个答案:

答案 0 :(得分:2)

我确实找到了如何使用appendTo方法在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做到这一点。

答案 1 :(得分:2)

不传递架构以附加到文件