由于 avro 中的数据文件嵌入了该架构,因此读者不希望保留单独的 .avsc 文件来指定架构。我正在寻找一个以这种方式工作的java示例,但我找不到。有人请帮我获取相同的代码示例。
Schema schema = new Schema.Parser().parse(new File("./AvroSchema/emp.avsc"));
DatumReader<GenericRecord> datumReader = new GenericDatumReader<GenericRecord>(schema);
DataFileReader<GenericRecord> dataFileReader = new DataFileReader<GenericRecord>(new File("./AvroFileStore/empData.txt"), datumReader);
GenericRecord emp = null;
while (dataFileReader.hasNext()) {
emp = dataFileReader.next(emp);
System.out.println(emp);
}
在此示例中,我们使用
DataFileReader
单独向 datumReader
提供 avro 模式。
GenericDatumReader
还有一个不带任何参数的构造函数。只需不要向其传递任何架构即可。当然,这仅适用于数据文件,不适用于未嵌入架构的数据流。
顺便说一句,一旦您构建了
dataFileReader
,您就可以调用其 getSchema()
方法来获取模式(如果需要)。