是否需要使用架构标头从文件反序列化avro记录的架构

时间:2020-06-22 04:25:54

标签: java serialization avro

以下是在avro中进行序列化的代码(摘自apache avro网站-https://avro.apache.org/docs/1.7.7/gettingstartedjava.html):

File file = new File("users.avro");
DatumWriter<GenericRecord> datumWriter = new GenericDatumWriter<GenericRecord>(schema);
DataFileWriter<GenericRecord> dataFileWriter = new DataFileWriter<GenericRecord>(datumWriter);
dataFileWriter.create(schema, file);    <==== Note1
dataFileWriter.append(user1);
dataFileWriter.append(user2);
dataFileWriter.close();

反序列化的代码:

DatumReader<GenericRecord> datumReader = new GenericDatumReader<GenericRecord>(schema); <==== Note2
DataFileReader<GenericRecord> dataFileReader = new DataFileReader<GenericRecord>(file, datumReader);
GenericRecord user = null;
while (dataFileReader.hasNext()) {
    user = dataFileReader.next(user);
}

由于模式作为标头(Note1)存储在文件中,是否有办法首先从文件中检索它并将其传递给GenericDatumReader(),而不是先验(Note2)?

谢谢你, 艾哈迈德。

0 个答案:

没有答案