avro文件是常用的一种文件类型,它跟json文件一样存储了文件的元信息,它可以方便的进行序列化和反序列化。
写avro文件
写avro文件主要包括三步,第一步创建avro文件的schema,第二步创建avro文件的输出,第三步将要写入avro文件的数据按照schema写出去。
1.创建schema,可以读取文件创建schema也可以自己写一个字符串,然后通过Schema.parse(sch);生成schema,如下图所示:
2.创建avro文件的输出,使用如下代码创建输出,也可以将out改为file类型的文件,不过考虑到使用的广泛性,这里以输入输出流为例。
3.写数据,按照schema的规范,将数据写出,如下图所示:
读取avro文件
读取avro文件分为三步,第一步创建avro文件的读取,第二步获得avro文件的schema,第三步根据获得的schema读取avro文件的记录。
1.创建avro文件读取,使用DataFileStream来创建读取,代码如下:
DataFileStream<GenericRecord> reader = new DataFileStream<>(in, new GenericDatumReader<>())
其中in为avro文件的文件流。
2.获得avro文件的schema,使用如下代码获取schema。
List<Schema.Field> list = reader.getSchema().getFields();
3.第三步,根据schema读取所有记录,如下图所示:
最终builder为avro文件的所有记录。