既存のAVROデータファイルにデータを追加できますか?

StackOverflow https://stackoverflow.com/questions/8806689

  •  26-10-2019
  •  | 
  •  

質問

既存の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
役に立ちましたか?

解決

スキーマを渡してファイルに追加しないでください

他のヒント

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"));

しかし、私はルビーからそれをしたいです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top