如何从 Java 中的 avro 文件中提取模式
2022-09-01 17:10:52
如何首先从Java中的avro文件中提取模式,然后提取数据?与这个问题相同,除了在java中。
我已经看到了如何从avsc文件而不是avro文件获取架构的示例。我应该往哪个方向看?
Schema schema = new Schema.Parser().parse(
new File("/home/Hadoop/Avro/schema/emp.avsc")
);
如何首先从Java中的avro文件中提取模式,然后提取数据?与这个问题相同,除了在java中。
我已经看到了如何从avsc文件而不是avro文件获取架构的示例。我应该往哪个方向看?
Schema schema = new Schema.Parser().parse(
new File("/home/Hadoop/Avro/schema/emp.avsc")
);
如果您想了解Avro文件的架构,而不必生成相应的类或关心文件属于哪个类,则可以使用:GenericDatumReader
DatumReader<GenericRecord> datumReader = new GenericDatumReader<>();
DataFileReader<GenericRecord> dataFileReader = new DataFileReader<>(new File("file.avro"), datumReader);
Schema schema = dataFileReader.getSchema();
System.out.println(schema);
然后,您可以读取文件内的数据:
GenericRecord record = null;
while (dataFileReader.hasNext()) {
record = dataFileReader.next(record);
System.out.println(record);
}
感谢您@Helder佩雷拉的回答。作为补充,架构也可以从实例中提取。
这是一个关于它的实时演示,上面的链接显示了如何在java中获取数据和模式,以及数据格式。getSchema()
GenericRecord
Parquet
ORC
AVRO