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文件的所有记录。