AVRO-클래스 생성을 통한 역 직렬화
앞에서 설명한 것처럼 스키마에 해당하는 클래스를 생성하거나 파서 라이브러리를 사용하여 Avro 스키마를 프로그램으로 읽을 수 있습니다. 이 장에서는 스키마를 읽는 방법에 대해 설명합니다.by generating a class 과 Deserialize 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 판독기에 데이터를 반환합니다.
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);
}
}
}
생성 된 코드가있는 디렉토리를 찾습니다. 이 경우home/Hadoop/Avro_work/with_code_gen.
$ cd home/Hadoop/Avro_work/with_code_gen/
이제 위의 프로그램을 복사하여 이름이 지정된 파일에 저장하십시오. DeSerialize.java. 아래와 같이 컴파일하고 실행하십시오-
$ javac Deserialize.java
$ java Deserialize
산출
{"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"}