AVRO - Tổng quan
Để truyền dữ liệu qua mạng hoặc để lưu trữ liên tục, bạn cần phải tuần tự hóa dữ liệu. Trước khiserialization APIs được cung cấp bởi Java và Hadoop, chúng tôi có một tiện ích đặc biệt, được gọi là Avro, một kỹ thuật tuần tự hóa dựa trên lược đồ.
Hướng dẫn này dạy bạn cách tuần tự hóa và giải mã dữ liệu bằng Avro. Avro cung cấp thư viện cho nhiều ngôn ngữ lập trình khác nhau. Trong hướng dẫn này, chúng tôi trình bày các ví dụ sử dụng thư viện Java.
Avro là gì?
Apache Avro là một hệ thống tuần tự hóa dữ liệu trung lập với ngôn ngữ. Nó được phát triển bởi Doug Cắt, cha đẻ của Hadoop. Vì các lớp có thể ghi Hadoop thiếu tính di động của ngôn ngữ, nên Avro trở nên khá hữu ích, vì nó xử lý các định dạng dữ liệu có thể được xử lý bằng nhiều ngôn ngữ. Avro là một công cụ ưa thích để tuần tự hóa dữ liệu trong Hadoop.
Avro có một hệ thống dựa trên giản đồ. Một lược đồ độc lập với ngôn ngữ được liên kết với các hoạt động đọc và ghi của nó. Avro tuần tự hóa dữ liệu có một lược đồ tích hợp sẵn. Avro tuần tự hóa dữ liệu thành định dạng nhị phân nhỏ gọn, có thể được giải mã bởi bất kỳ ứng dụng nào.
Avro sử dụng định dạng JSON để khai báo cấu trúc dữ liệu. Hiện tại, nó hỗ trợ các ngôn ngữ như Java, C, C ++, C #, Python và Ruby.
Lược đồ Avro
Avro phụ thuộc nhiều vào schema. Nó cho phép mọi dữ liệu được ghi mà không cần biết trước về lược đồ. Nó tuần tự hóa nhanh chóng và kết quả là dữ liệu được tuần tự hóa có kích thước nhỏ hơn. Lược đồ được lưu trữ cùng với dữ liệu Avro trong một tệp để xử lý thêm.
Trong RPC, máy khách và máy chủ trao đổi các lược đồ trong quá trình kết nối. Trao đổi này giúp giao tiếp giữa các trường được đặt tên giống nhau, các trường bị thiếu, các trường bổ sung, v.v.
Các lược đồ Avro được định nghĩa bằng JSON giúp đơn giản hóa việc triển khai nó bằng các ngôn ngữ có thư viện JSON.
Giống như Avro, có các cơ chế tuần tự hóa khác trong Hadoop như Sequence Files, Protocol Buffers, và Thrift.
So sánh với Bộ đệm Giao thức và Tiết kiệm
Thrift và Protocol Bufferslà những thư viện có thẩm quyền nhất với Avro. Avro khác với các khung này theo những cách sau:
Avro hỗ trợ cả kiểu động và kiểu tĩnh theo yêu cầu. Bộ đệm Giao thức và Thrift sử dụng Ngôn ngữ Định nghĩa Giao diện (IDL) để chỉ định các lược đồ và kiểu của chúng. Các IDL này được sử dụng để tạo mã cho tuần tự hóa và giải mã hóa.
Avro được xây dựng trong hệ sinh thái Hadoop. Bộ đệm Tiết kiệm và Giao thức không được xây dựng trong hệ sinh thái Hadoop.
Không giống như Thrift và Protocol Buffer, định nghĩa lược đồ của Avro là trong JSON chứ không phải trong bất kỳ IDL độc quyền nào.
Bất động sản | Avro | Bộ đệm giao thức & tiết kiệm |
---|---|---|
Lược đồ động | Đúng | Không |
Tích hợp vào Hadoop | Đúng | Không |
Lược đồ trong JSON | Đúng | Không |
Không cần biên dịch | Đúng | Không |
Không cần khai báo ID | Đúng | Không |
Tối tân | Đúng | Không |
Đặc điểm của Avro
Dưới đây là một số tính năng nổi bật của Avro -
Avro là một language-neutral hệ thống tuần tự hóa dữ liệu.
Nó có thể được xử lý bằng nhiều ngôn ngữ (hiện tại là C, C ++, C #, Java, Python và Ruby).
Avro tạo ra định dạng có cấu trúc nhị phân compressible và splittable. Do đó, nó có thể được sử dụng hiệu quả làm đầu vào cho các công việc Hadoop MapReduce.
Avro cung cấp rich data structures. Ví dụ, bạn có thể tạo một bản ghi chứa một mảng, một kiểu liệt kê và một bản ghi con. Các kiểu dữ liệu này có thể được tạo bằng bất kỳ ngôn ngữ nào, có thể được xử lý trong Hadoop và kết quả có thể được chuyển sang ngôn ngữ thứ ba.
Avro schemas xác định trong JSON, tạo điều kiện triển khai bằng các ngôn ngữ đã có thư viện JSON.
Avro tạo một tệp tự mô tả có tên Tệp Dữ liệu Avro, trong đó tệp này lưu trữ dữ liệu cùng với lược đồ của nó trong phần siêu dữ liệu.
Avro cũng được sử dụng trong các cuộc gọi thủ tục từ xa (RPC). Trong RPC, lược đồ trao đổi máy khách và máy chủ trong kết nối bắt tay.
Hoạt động chung của Avro
Để sử dụng Avro, bạn cần tuân theo quy trình làm việc đã cho -
Step 1- Tạo lược đồ. Ở đây bạn cần thiết kế lược đồ Avro theo dữ liệu của bạn.
Step 2- Đọc các lược đồ vào chương trình của bạn. Nó được thực hiện theo hai cách -
By Generating a Class Corresponding to Schema- Biên dịch lược đồ bằng Avro. Điều này tạo ra một tệp lớp tương ứng với lược đồ
By Using Parsers Library - Bạn có thể đọc trực tiếp lược đồ bằng cách sử dụng thư viện phân tích cú pháp.
Step 3 - Tuần tự hóa dữ liệu bằng cách sử dụng API tuần tự hóa được cung cấp cho Avro, được tìm thấy trong package org.apache.avro.specific.
Step 4 - Hủy số hóa dữ liệu bằng cách sử dụng API giải mã được cung cấp cho Avro, được tìm thấy trong package org.apache.avro.specific.