Apache Avro Tutorial For Beginners 2019 | Learn Avro
Today, we will start our new journey with Apache Avro tutorial. A language-neutral data serialization system, which is developed by the father of Hadoop, “Doug Cutting”, is what we call Apache Avro. While it comes to serialize data in Hadoop(Data Serialization), Avro is the most preferred tool.
So, in this Avro tutorial, we will learn the whole concept of Apache Avro in detail. Apache Avro Tutorial includes Avro schemas, features as well as its uses to understand well. Moreover, we will see the need for Avro, Avro pros & Cons and Avro example. Also, we will discuss datatypes and comparisons in Avro. However, Avro performs Data Serialization. So, let’s begin with the brief introduction of Data Serialization, then we will move to Apache Avro.
1. What is Data Serialization?
Basically, in order to translate data in the computer environment into binary or textual form, a mechanism is used that is what we call Data Serialization. Though, this serialization process helps to transport data over network or store in some persistent storage media in an easy way.
Both Hadoop and Java offer serialization APIs, which are Java based. However, Avro is not only language independent but also it is schema-based.
2. What is Avro?
Avro Tutorial – A language-neutral data serialization system is what we call Avro. Basically, It was developed by the father of Hadoop, Doug Cutting. Previously there was a lack of language portability in Hadoop writable classes. So, Avro becomes quite helpful at that place. It is because Avro deals with data formats that can be further processed by multiple languages. Moreover, we can say, to serialize data in Hadoop, Avro is the most preferred tool.
Explore Best Books to learn Apache Avro
In addition, it has a schema-based system. And, there are several reads and write operations of this language-independent schema. Especially, the data which has a built-in schema is that Avro serializes. Also, the data which can be deserialized by any application, Avro serializes that data into a compact binary format.
And, in order to declare the data structures, Avro uses JSON format. Avro supports various languages like Java, C, C++, C#, Python, as well as Ruby.
a. Key Points About Apache Avro
Some key points of Avro in Apache Avro Tutorial are:
- It is a Data serialization system.
- Avro uses JSON based schemas.
- Also, uses RPC calls to send data.
- Here, during the data exchange, Schema’s sent.
3. Avro Tutorial – Offerings
Here is the list which shows, what Avro offers:
- Avro offers rich data structures.
- Also, a compact, fast, binary data format.
- Moreover, it provides a container file, to store persistent data.
- A Remote Procedure Call (RPC).
- And, Avro offers simple integration with dynamic languages. Although to read or write data files or implement RPC protocols, we don’t need Code generation. So, only for statically typed languages, Code generation as an optional optimization, worth implementing.
Next in Avro tutorial is the audience for Avro.
4. Avro Tutorial – Intended Audience
The professionals those are aspiring to learn the basics of Big Data Analytics by using Hadoop Framework and also wants to become a successful Hadoop developer, must go for this Avro Tutorial. Moreover, for enthusiasts those who want to use Avro for data serialization as well as deserialization, Avro is a handy resource.
5. Avro Tutorial – Prerequisites
We assume that all are already aware of Hadoop’s architecture and APIs, before we start proceeding with this Apache Avro Tutorial, and also using Java, all should have experience in writing basic applications, preferably.
6. Avro Tutorial – Avro Schemas
Basically, Avro depends on schemas. When writing it is always present, but when data is read, the schema used. And, making serialization both fast and small, it allows each datum to be written with no per-value overheads.
In addition, its schemas are defined with JSON. So, that helps for implementation in languages those already have JSON libraries.
7. Avro Tutorial – Uses of Apache Avro
We need to follow the given workflow in order to use Avro −
At very first create schemas. So, here we need to design Avro schema according to our data. That we need to read the schemas into our program, which is possible in two ways:
- Generating a Class Corresponding to Schema
Compile the schema using Avro. This generates a class file corresponding to the schema
- Using Parsers Library
We can directly read the schema using the parsers library.
After that, using the serialization API provided for Avro, which is found in the package org.apache.avro.specific which is found in the package org.apache.avro.specific serializes the data.
Furthermore, using the deserialization API provided for Avro, which is found in the package org.apache.avro.specific, Deserialize the data.
8. Avro Tutorial – Datatypes
Avro supports a wide range of datatypes, which are listed below in the Apache Avro Tutorial:
i. Primitive Types
Here is the list of Primitive Types which Avro supports:
- null: no value
- boolean: a binary value
- int: 32-bit signed integer
- long: 64-bit signed integer
- float: single precision (32-bit) IEEE 754 floating-point number
- double: double precision (64-bit) IEEE 754 floating-point number
- bytes: the sequence of 8-bit unsigned bytes
- string: Unicode character sequence
ii. Complex Types
There are six kinds of complex data types which Avro supports :
9. Comparison With Other Systems
There are various systems such as Thrift, Protocol Buffers, etc. which are similar to Avro in the functionality aspect. But there are some features where Avro differs from these systems, like:
a. Dynamic typing
There is no need to generate data in Avro. Moreover, by a schema that allows the full processing of that data without static datatypes, code generation, etc, data is always accompanied. Moreover, it encourages the construction of data-processing systems as well as languages.
b. Untagged data
While data is read, the schema is present. So, less type information needs to be encoded, considerably that results in smaller serialization size.
c. No manually-assigned field IDs
When processing data, both the old and new schemas are always present, while schema changes, thus using field names, differences may be resolved symbolically.
Comparing: As per the requirement, Avro supports both dynamic and static types. In order to specify schemas and their types, protocol buffers and thrift use Interface Definition Languages (IDLs). Hence, in order to generate code for serialization and deserialization, it uses these IDLs.
Moreover, Avro’s schema definition is in JSON and not in any proprietary IDL, unlike Thrift and Protocol Buffer.
|Property||Avro||Thrift & Protocol Buffer|
|Built into Hadoop||Yes||No|
|The schema in JSON||Yes||No|
|No need to compile||Yes||No|
|No need to declare IDs||Yes||No|
10. Features of Avro
Some of the prominent Apache Avro Features are −
- Basically, it is a language-neutral data serialization system.
- In many languages, we can process Avro. Like C, C++, C#, Java, Python, and Ruby.
- Also, it can create a binary structured format. That format is compressible as well as splittable. Thus we can efficiently use it as the input to Hadoop MapReduce jobs.
- Moreover, it offers rich data structures.
- Further, in JSON, Avro schemas defined, it facilitates implementation in the languages which already have JSON libraries.
- In addition, Avro creates a self-describing file name of the Avro Data File, in which it stores data along with its schema in the metadata section.
- In Remote Procedure Calls (RPCs) also Avro is used.
11. Advantages and Disadvantages of Avro
Along with its features, Avro also attains some Pros and Cons. So, let’s discuss them:
a. Pros of Apache Avro
- Smallest size.
- Compress block at a time; splittable.
- Object structure maintained.
- It supports reading old data w/ new schema.
b. Cons of Apache Avro
- Need to use .NET 4.5, in the case of C# Avro, to make the best use of it.
- Potentially slower serialization.
- In order to read/write data, we need a schema.
12. Why Avro?
Apache Avro is needed –
1. Especially, for the serialization format for persistent data.
2. Wire format for communication.
- Among Hadoop nodes.
- From client programs to Hadoop services
So, this was all in the Apache Avro tutorial. Hope you like our explanation.
13. Conclusion: Apache Avro Tutorial
Hence, in this Avro tutorial for beginners, we have seen the whole concept of Apache Avro in detail. Moreover, we discussed the meaning of Avro and data serialization. Also, we discussed Avro examples, features, pros & cons, and uses. Along with this, we also saw Avro schema and comparisons of Avro. Keep visiting DataFlair for more articles on Avro.