AVRO-파서를 사용한 역 직렬화

앞서 언급했듯이 스키마에 해당하는 클래스를 생성하거나 파서 라이브러리를 사용하여 Avro 스키마를 프로그램으로 읽을 수 있습니다. Avro에서 데이터는 항상 해당 스키마와 함께 저장됩니다. 따라서 코드 생성없이 항상 직렬화 된 항목을 읽을 수 있습니다.

이 장에서는 스키마를 읽는 방법에 대해 설명합니다. using parsers libraryDeserializing Avro를 사용하여 데이터.

파서 라이브러리를 사용한 역 직렬화

직렬화 된 데이터는 파일에 저장됩니다. mydata.txt. Avro를 사용하여 역 직렬화하고 읽을 수 있습니다.

파일에서 직렬화 된 데이터를 역 직렬화하려면 아래 제공된 절차를 따르십시오.

1 단계

먼저 파일에서 스키마를 읽으십시오. 이렇게하려면Schema.Parser수업. 이 클래스는 다양한 형식으로 스키마를 구문 분석하는 메서드를 제공합니다.

인스턴스화 Schema.Parser 스키마가 저장된 파일 경로를 전달하여 클래스.

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

2 단계

개체 만들기 DatumReader 인터페이스 사용 SpecificDatumReader 수업.

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

3 단계

인스턴스화 DataFileReader수업. 이 클래스는 파일에서 직렬화 된 데이터를 읽습니다. 그것은DatumReader 객체 및 직렬화 된 데이터가있는 파일의 경로를 생성자에 대한 매개 변수로 사용합니다.

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

4 단계

다음 방법을 사용하여 역 직렬화 된 데이터를 인쇄합니다. DataFileReader.

  • 그만큼 hasNext() Reader에 요소가있는 경우 메서드는 부울을 반환합니다.

  • 그만큼 next() 의 방법 DataFileReader 판독기에 데이터를 반환합니다.

while(dataFileReader.hasNext()){

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

예 – 파서 라이브러리를 사용한 역 직렬화

다음 전체 프로그램은 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");
   }
}

생성 된 코드가있는 디렉토리를 찾습니다. 이 경우에는home/Hadoop/Avro_work/without_code_gen.

$ cd home/Hadoop/Avro_work/without_code_gen/

이제 위의 프로그램을 복사하여 이름이 지정된 파일에 저장하십시오. DeSerialize.java. 아래와 같이 컴파일하고 실행하십시오-

$ javac Deserialize.java
$ java Deserialize

산출

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