Avro 简明教程
AVRO - Deserialization By Generating Class
如前所述,可以通过生成与模式相对应的类或通过使用解析器库来读取 Avro 模式到一个程序中。本章介绍了如何使用 Avro 读取模式 by generating a class 和 Deserialize 数据。
Deserialization by Generating a Class
序列化数据存储在文件 emp.avro 中。你可以使用 Avro 序列化并读取它。
按照以下步骤从文件中序列化序列化数据。
Step 1
使用 SpecificDatumReader 类创建一个 DatumReader 接口对象。
DatumReader<emp>empDatumReader = new SpecificDatumReader<emp>(emp.class);
Example – Deserialization by Generating a Class
以下完整程序展示了如何使用 Avro 序列化文件中的数据。
import java.io.File;
import java.io.IOException;
import org.apache.avro.file.DataFileReader;
import org.apache.avro.io.DatumReader;
import org.apache.avro.specific.SpecificDatumReader;
public class Deserialize {
public static void main(String args[]) throws IOException{
//DeSerializing the objects
DatumReader<emp> empDatumReader = new SpecificDatumReader<emp>(emp.class);
//Instantiating DataFileReader
DataFileReader<emp> dataFileReader = new DataFileReader<emp>(new
File("/home/Hadoop/Avro_Work/with_code_genfile/emp.avro"), empDatumReader);
emp em=null;
while(dataFileReader.hasNext()){
em=dataFileReader.next(em);
System.out.println(em);
}
}
}
浏览到生成代码所在目录。在本例中,在 home/Hadoop/Avro_work/with_code_gen. 。
$ cd home/Hadoop/Avro_work/with_code_gen/
现在,复制并保存以上程序到名为 DeSerialize.java 的文件中。如下所示,对其进行编译和执行:
$ javac Deserialize.java
$ java Deserialize