本文介紹了如何在Java中從avro文件中提取模式的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
如何在Java中首先從Avro文件提取模式,然后從Avro文件中提取數(shù)據(jù)?與this問(wèn)題相同,但在Java中除外。
我見(jiàn)過(guò)如何從AVSC文件而不是avro文件獲取模式的示例。我應(yīng)該朝哪個(gè)方向看?
Schema schema = new Schema.Parser().parse(
new File("/home/Hadoop/Avro/schema/emp.avsc")
);
推薦答案
如果您想知道avro文件的架構(gòu),而不必生成相應(yīng)的類(lèi)或關(guān)心該文件屬于哪個(gè)類(lèi),則可以使用GenericDatumReader
:
DatumReader<GenericRecord> datumReader = new GenericDatumReader<>();
DataFileReader<GenericRecord> dataFileReader = new DataFileReader<>(new File("file.avro"), datumReader);
Schema schema = dataFileReader.getSchema();
System.out.println(schema);
然后您可以讀取文件中的數(shù)據(jù):
GenericRecord record = null;
while (dataFileReader.hasNext()) {
record = dataFileReader.next(record);
System.out.println(record);
}
這篇關(guān)于如何在Java中從avro文件中提取模式的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,