Учебники

AVRO — Десериализация путем создания класса

Как описано ранее, можно прочитать схему Avro в программу, создав класс, соответствующий этой схеме, или используя библиотеку синтаксических анализаторов. В этой главе описывается, как читать схему путем создания класса и десериализации данных с помощью Avro.

Десериализация путем генерации класса

Сериализованные данные хранятся в файле emp.avro . Вы можете десериализовать и прочитать его с помощью Avro.

Сериализованные данные хранятся

Следуйте процедуре, приведенной ниже, для десериализации сериализованных данных из файла.

Шаг 1

Создайте объект интерфейса DatumReader, используя класс SpecificDatumReader .

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

Шаг 2

Создание экземпляра DataFileReader для класса emp . Этот класс читает сериализованные данные из файла. В качестве параметров для конструктора требуется объект Dataumeader и путь к файлу, в котором существуют сериализованные данные.

DataFileReader<emp> dataFileReader = new DataFileReader(new File("/path/to/ emp.avro "), empDatumReader);

Шаг 3

Распечатайте десериализованные данные, используя методы DataFileReader .

  • Метод hasNext () вернет логическое значение, если в Reader есть какие-либо элементы.

  • Метод next () объекта DataFileReader возвращает данные в Reader.

Метод hasNext () вернет логическое значение, если в Reader есть какие-либо элементы.

Метод next () объекта DataFileReader возвращает данные в Reader.

while(dataFileReader.hasNext()){

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

Пример — десериализация путем генерации класса

Следующая полная программа показывает, как десериализовать данные в файле с помощью 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);
      }
   }
}

Перейдите в каталог, где находится сгенерированный код. В этом случае дома / Hadoop / Avro_work / with_code_gen.

$ cd home/Hadoop/Avro_work/with_code_gen/

Теперь скопируйте и сохраните вышеуказанную программу в файл с именем DeSerialize.java . Скомпилируйте и выполните его, как показано ниже —