2012-01-10 11 views
2

既存のAvroシリアル化ファイルにデータを追加する方法がないようです。私は複数のプロセスを単一のavroファイルに書きたいと思っていますが、オープンするたびに最初からやり直しています。私はすべてのデータを読み込み、再び書き戻したいとは思わない。私は様々な設定として「AB」と「AB +」しようとしたルビーのコード例、ない喜びを使用して既存のAvroデータファイルにデータを追加できますか?

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 

答えて

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からそれを行うのが大好きです。

関連する問題