本文着重研究avro反序列化的Generic方式,先从下面这段读取avro文件(反序列化)的代码开始讲起。
File file = new File("e://twitter.avro");
DatumReader<GenericRecord> datumReader = new GenericDatumReader<GenericRecord>();
DataFileReader<GenericRecord> dataFileReader = new DataFileReader<GenericRecord>(file, datumReader);
GenericRecord datum = null;
while(dataFileReader.hasNext()) {
datum = dataFileReader.next(datum);
System.out.println(datum);
}
1. 文件读取
类图继承
DataFileReader是继承DataFileStream实现FileReader接口,
public class DataFileReader<D>
extends DataFileStream<D> implements FileReader<D>
类图如下:
本文详细介绍了Hadoop中Avro文件的反序列化过程,包括DataFileReader和DataFileStream的类图继承,Header与Data Block的读取。在DataFileStream的initialize()方法中初始化Header,Data Block读取则由GenericDatumReader负责,通过ResolvingDecoder进行解码操作。
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



