AVRO - Giải mã bằng cách tạo lớp
Như đã mô tả trước đó, người ta có thể đọc một lược đồ Avro vào một chương trình bằng cách tạo một lớp tương ứng với lược đồ hoặc bằng cách sử dụng thư viện phân tích cú pháp. Chương này mô tả cách đọc lược đồby generating a class và Deserialize dữ liệu sử dụng Avro.
Hủy đăng ký bằng cách tạo một lớp
Dữ liệu tuần tự hóa được lưu trữ trong tệp emp.avro. Bạn có thể deserialize và đọc nó bằng Avro.
Làm theo quy trình dưới đây để giải mã dữ liệu tuần tự hóa từ một tệp.
Bước 1
Tạo một đối tượng của DatumReader giao diện sử dụng SpecificDatumReader lớp học.
DatumReader<emp>empDatumReader = new SpecificDatumReader<emp>(emp.class);
Bước 2
Khởi tạo DataFileReader cho emplớp học. Lớp này đọc dữ liệu tuần tự từ một tệp. Nó yêu cầuDataumeader đối tượng và đường dẫn của tệp nơi dữ liệu được tuần tự hóa đang tồn tại, như một tham số cho hàm tạo.
DataFileReader<emp> dataFileReader = new DataFileReader(new File("/path/to/emp.avro"), empDatumReader);
Bước 3
In dữ liệu được giải hóa bằng cách sử dụng các phương pháp của DataFileReader.
Các hasNext() phương thức sẽ trả về boolean nếu có bất kỳ phần tử nào trong Reader.
Các next() phương pháp của DataFileReader trả về dữ liệu trong Trình đọc.
while(dataFileReader.hasNext()){
em=dataFileReader.next(em);
System.out.println(em);
}
Ví dụ - Hủy đăng ký bằng cách tạo lớp
Chương trình hoàn chỉnh sau đây chỉ ra cách giải mã dữ liệu trong tệp bằng 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);
}
}
}
Duyệt vào thư mục nơi mã đã tạo được đặt. Trong trường hợp này, tạihome/Hadoop/Avro_work/with_code_gen.
$ cd home/Hadoop/Avro_work/with_code_gen/
Bây giờ, sao chép và lưu chương trình trên trong tệp có tên DeSerialize.java. Biên dịch và thực thi nó như hình dưới đây -
$ javac Deserialize.java
$ java Deserialize
Đầu ra
{"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"}