AVRO - Deserialization Menggunakan Parser

Seperti yang disebutkan sebelumnya, seseorang dapat membaca skema Avro ke dalam program baik dengan membuat kelas yang sesuai dengan skema atau dengan menggunakan pustaka parsers. Di Avro, data selalu disimpan dengan skema yang sesuai. Oleh karena itu, kami selalu dapat membaca item berseri tanpa pembuatan kode.

Bab ini menjelaskan cara membaca skema using parsers library dan Deserializing data menggunakan Avro.

Deserialization Menggunakan Parsers Library

Data serial disimpan dalam file mydata.txt. Anda dapat menghapus dan membacanya menggunakan Avro.

Ikuti prosedur yang diberikan di bawah ini untuk deserialisasi data serial dari sebuah file.

Langkah 1

Pertama-tama, baca skema dari file. Untuk melakukannya, gunakanSchema.Parserkelas. Kelas ini menyediakan metode untuk mengurai skema dalam format yang berbeda.

Instantiate Schema.Parser kelas dengan melewatkan jalur file tempat skema disimpan.

Schema schema = new Schema.Parser().parse(new File("/path/to/emp.avsc"));

Langkah 2

Buat objek dari DatumReader antarmuka menggunakan SpecificDatumReader kelas.

DatumReader<emp>empDatumReader = new SpecificDatumReader<emp>(emp.class);

LANGKAH 3

Memberi contoh DataFileReaderkelas. Kelas ini membaca data serial dari sebuah file. Ini membutuhkanDatumReader objek, dan jalur file tempat data serial ada, sebagai parameter untuk konstruktor.

DataFileReader<GenericRecord> dataFileReader = new DataFileReader<GenericRecord>(new File("/path/to/mydata.txt"), datumReader);

LANGKAH 4

Cetak data deserialisasi menggunakan metode DataFileReader.

  • Itu hasNext() metode mengembalikan boolean jika ada elemen di Pembaca.

  • Itu next() metode dari DataFileReader mengembalikan data di Pembaca.

while(dataFileReader.hasNext()){

   em=dataFileReader.next(em);
   System.out.println(em);
}

Contoh - Deserialisasi Menggunakan Parsers Library

Program lengkap berikut menunjukkan cara deserialisasi data serial menggunakan pustaka Parsers -

public class Deserialize {
   public static void main(String args[]) throws Exception{
	
      //Instantiating the Schema.Parser class.
      Schema schema = new Schema.Parser().parse(new File("/home/Hadoop/Avro/schema/emp.avsc"));
      DatumReader<GenericRecord> datumReader = new GenericDatumReader<GenericRecord>(schema);
      DataFileReader<GenericRecord> dataFileReader = new DataFileReader<GenericRecord>(new File("/home/Hadoop/Avro_Work/without_code_gen/mydata.txt"), datumReader);
      GenericRecord emp = null;
		
      while (dataFileReader.hasNext()) {
         emp = dataFileReader.next(emp);
         System.out.println(emp);
      }
      System.out.println("hello");
   }
}

Jelajahi direktori tempat kode yang dihasilkan ditempatkan. Dalam hal ini, padahome/Hadoop/Avro_work/without_code_gen.

$ cd home/Hadoop/Avro_work/without_code_gen/

Sekarang salin dan simpan program di atas dalam file bernama DeSerialize.java. Kompilasi dan jalankan seperti yang ditunjukkan di bawah ini -

$ javac Deserialize.java
$ java Deserialize

Keluaran

{"name": "ramu", "id": 1, "salary": 30000, "age": 25, "address": "chennai"}
{"name": "rahman", "id": 2, "salary": 35000, "age": 30, "address": "Delhi"}