6

既存のAvroシリアル化ファイルにデータを追加する方法がないようです。複数のプロセスで1つのavroファイルに書き込みたいのですが、開くたびに最初からやり直すようです。すべてのデータを読み込んでから、もう一度書き戻したくありません。

ルビーのサンプルコードを使用して、さまざまな設定として「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 に答える