AVRO - Deserialización generando clase
Como se describió anteriormente, se puede leer un esquema Avro en un programa generando una clase correspondiente al esquema o usando la biblioteca de analizadores. Este capítulo describe cómo leer el esquemaby generating a class y Deserialize los datos usando Avro.
Deserialización generando una clase
Los datos serializados se almacenan en el archivo emp.avro. Puede deserializarlo y leerlo con Avro.
Siga el procedimiento que se indica a continuación para deserializar los datos serializados de un archivo.
Paso 1
Crea un objeto de DatumReader interfaz usando SpecificDatumReader clase.
DatumReader<emp>empDatumReader = new SpecificDatumReader<emp>(emp.class);
Paso 2
Instanciar DataFileReader para empclase. Esta clase lee datos serializados de un archivo. Requiere elDataumeader objeto y ruta del archivo donde existen los datos serializados, como parámetros para el constructor.
DataFileReader<emp> dataFileReader = new DataFileReader(new File("/path/to/emp.avro"), empDatumReader);
Paso 3
Imprima los datos deserializados, utilizando los métodos de DataFileReader.
los hasNext() El método devolverá un booleano si hay algún elemento en el Reader.
los next() método de DataFileReader devuelve los datos en el lector.
while(dataFileReader.hasNext()){
em=dataFileReader.next(em);
System.out.println(em);
}
Ejemplo: deserialización generando una clase
El siguiente programa completo muestra cómo deserializar los datos en un archivo usando 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);
}
}
}
Busque en el directorio donde se coloca el código generado. En este caso, enhome/Hadoop/Avro_work/with_code_gen.
$ cd home/Hadoop/Avro_work/with_code_gen/
Ahora, copie y guarde el programa anterior en el archivo llamado DeSerialize.java. Compílelo y ejecútelo como se muestra a continuación:
$ javac Deserialize.java
$ java Deserialize
Salida
{"name": "omar", "id": 1, "salary": 30000, "age": 21, "address": "Hyderabad"}
{"name": "ram", "id": 2, "salary": 40000, "age": 30, "address": "Hyderabad"}
{"name": "robbin", "id": 3, "salary": 35000, "age": 25, "address": "Hyderabad"}