AVRO - Désérialisation en générant une classe
Comme décrit précédemment, on peut lire un schéma Avro dans un programme soit en générant une classe correspondant au schéma soit en utilisant la bibliothèque d'analyseurs. Ce chapitre décrit comment lire le schémaby generating a class et Deserialize les données en utilisant Avro.
Désérialisation en générant une classe
Les données sérialisées sont stockées dans le fichier emp.avro. Vous pouvez le désérialiser et le lire à l'aide d'Avro.
![](https://assets.edu.lat/avro/images/serialized_data_is_stored.jpg)
Suivez la procédure ci-dessous pour désérialiser les données sérialisées d'un fichier.
Étape 1
Créer un objet de DatumReader interface utilisant SpecificDatumReader classe.
DatumReader<emp>empDatumReader = new SpecificDatumReader<emp>(emp.class);
Étape 2
Instancier DataFileReader pour empclasse. Cette classe lit les données sérialisées à partir d'un fichier. Cela nécessite leDataumeader objet et chemin du fichier dans lequel les données sérialisées existent, en tant que paramètres du constructeur.
DataFileReader<emp> dataFileReader = new DataFileReader(new File("/path/to/emp.avro"), empDatumReader);
Étape 3
Imprimez les données désérialisées, en utilisant les méthodes de DataFileReader.
le hasNext() La méthode retournera un booléen s'il y a des éléments dans le Reader.
le next() méthode de DataFileReader renvoie les données dans le Reader.
while(dataFileReader.hasNext()){
em=dataFileReader.next(em);
System.out.println(em);
}
Exemple - Désérialisation en générant une classe
Le programme complet suivant montre comment désérialiser les données d'un fichier à l'aide d'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);
}
}
}
Naviguez dans le répertoire où le code généré est placé. Dans ce cas, àhome/Hadoop/Avro_work/with_code_gen.
$ cd home/Hadoop/Avro_work/with_code_gen/
Maintenant, copiez et enregistrez le programme ci-dessus dans le fichier nommé DeSerialize.java. Compilez et exécutez-le comme indiqué ci-dessous -
$ javac Deserialize.java
$ java Deserialize
Production
{"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"}