6

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

2 回答 2

4

我确实弄清楚了如何使用 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 中做到这一点。

于 2012-01-10T16:55:06.867 回答
3

不要传递架构以附加到文件

于 2012-04-13T23:54:34.183 回答