Можете ли вы добавить данные в существующий файл данных Avro? - PullRequest
5 голосов
/ 10 января 2012

Кажется, что нет никакого способа добавить данные в существующий сериализованный файл 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 ]

2 голосов
/ 14 апреля 2012

не передавать схему для добавления в файл

2 голосов
/ 10 января 2012

Я понял, как это сделать в Java, используя метод 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"));

Однако я бы хотел сделать это с Руби.

...