从数据文件解析 Avro 架构

问题描述 投票:0回答:1

由于 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 模式。

java avro
1个回答
3
投票

GenericDatumReader
还有一个不带任何参数的构造函数。只需不要向其传递任何架构即可。当然,这仅适用于数据文件,不适用于未嵌入架构的数据流。

顺便说一句,一旦您构建了

dataFileReader
,您就可以调用其
getSchema()
方法来获取模式(如果需要)。

来源:Hadoop:Tom White 的权威指南

© www.soinside.com 2019 - 2024. All rights reserved.