

{"id":21926,"date":"2018-07-18T16:20:34","date_gmt":"2018-07-18T10:50:34","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=21926"},"modified":"2023-08-16T08:10:36","modified_gmt":"2023-08-16T02:40:36","slug":"avro-tutorial","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/avro-tutorial\/","title":{"rendered":"Apache Avro Tutorial For Beginners | Learn Avro"},"content":{"rendered":"<p><span style=\"font-weight: 400\">Today, we will start our new journey with Apache Avro tutorial. A language-<em>neutral data serialization system<\/em>, which is developed by the father of <strong>Hadoop<\/strong>, \u201c<em>Doug Cutting<\/em>\u201d, is what we call Apache Avro. While it comes to serialize data in <em>Hadoop(Data Serialization)<\/em>, Avro is the most preferred tool. <\/span><\/p>\n<p><span style=\"font-weight: 400\">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 &amp; Cons and Avro example. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Also, we will discuss datatypes and comparisons in Avro. However, Avro performs Data Serialization. So, let\u2019s begin with the brief introduction of Data Serialization, then we will move to Apache Avro.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">What is Data Serialization?<\/span><\/h3>\n<p>The act of transforming complicated data structures or objects into a format that is simple to store, transport, or reconstruct later on is known as data serialisation. To enable effective utilisation in a variety of scenarios, such as data storage, network communication, or inter-process communication, it entails translating data into a standardised, compact binary or textual representation.<\/p>\n<p>Data serialization&#8217;s main goals are to enable data storage on disc drives or databases, facilitate data transmission across networks or systems, support versioning and evolution of data formats without compromising backward compatibility, and promote application interoperability. JSON, XML, Protocol Buffers, Apache Avro, and MessagePack are examples of popular data serialisation formats; each has unique benefits and use cases.<\/p>\n<p>Modern data-driven applications and distributed systems, where effective data transmission and storage are necessary for smooth data processing and communication, use data serialisation as a core idea.<\/p>\n<h3><span style=\"font-weight: 400\">What is Avro?<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Avro Tutorial &#8211; 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. <\/span><\/p>\n<p><span style=\"font-weight: 400\">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.<\/span><\/p>\n<p><span style=\"font-weight: 400\">In addition, it has a schema-based system. And, there are several reads and write operations of this language-independent schema. <\/span><\/p>\n<p><span style=\"font-weight: 400\">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.<\/span><\/p>\n<p><span style=\"font-weight: 400\">And, in order to declare the data structures, Avro uses JSON format. Avro supports various languages like Java, C, C++, C#,<strong> Python<\/strong>, as well as Ruby.<\/span><\/p>\n<p><strong>a. Key Points About Apache Avro<\/strong><br \/>\nSome key points of Avro in Apache Avro Tutorial are:<\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">It is a Data serialization system.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Avro uses JSON based schemas.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Also, uses RPC calls to send data.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Here, during the data exchange, Schema&#8217;s sent.<\/span><\/li>\n<\/ul>\n<h3><span style=\"font-weight: 400\">Avro Tutorial &#8211; Offerings<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Here is the list which shows, what Avro offers:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Avro offers rich data structures.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Also, a compact, fast, binary data format.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Moreover, it provides a container file, to store persistent data.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">A Remote\u00a0Procedure Call (RPC).<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">And, Avro offers simple integration with dynamic languages. Although to read or write data files or implement RPC protocols, we don\u2019t need Code generation. So, only for statically typed languages, Code generation as an optional optimization, worth implementing.<\/span><\/li>\n<\/ul>\n<p>Next in Avro tutorial is the audience for Avro.<\/p>\n<h3><span style=\"font-weight: 400\">Avro Tutorial &#8211; Intended Audience<\/span><\/h3>\n<p><span style=\"font-weight: 400\">The professionals those are aspiring to learn the basics of <strong>Big Data <\/strong>Analytics by using <em>Hadoop Framework <\/em>and also wants to become a successful Hadoop developer, must go for this Avro Tutorial. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Moreover, for enthusiasts those who want to use Avro for data serialization as well as deserialization, Avro is a handy resource.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Avro Tutorial &#8211; Prerequisites<\/span><\/h3>\n<p><span style=\"font-weight: 400\">We assume that all are already aware of <em>Hadoop&#8217;s architecture<\/em> and <em>APIs<\/em>, before we start proceeding with this Apache Avro Tutorial, and also using Java, all\u00a0should have experience in writing basic applications, preferably.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Avro Tutorial &#8211; Avro Schemas<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Basically, <strong>Avro depends on schemas<\/strong>. When writing it is always present,\u00a0but 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.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">In addition, its schemas are defined with JSON. So, that helps\u00a0for implementation in languages those already have JSON libraries.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Avro Tutorial &#8211; Uses of Apache Avro<\/span><\/h3>\n<p><span style=\"font-weight: 400\"> We need to follow the given workflow in order to use Avro \u2212<\/span><br \/>\n<span style=\"font-weight: 400\">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:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><strong>Generating a Class Corresponding to Schema \u00a0<\/strong><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Compile the schema using Avro. This generates a class file corresponding to the schema<\/span><\/p>\n<ul>\n<li><strong>Using Parsers Library\u00a0<\/strong><\/li>\n<\/ul>\n<p>We can directly read the schema using the parsers library.<br \/>\nAfter that, using the serialization API provided for Avro,\u00a0which is found in the package org.apache.avro.specific which is found in the package<strong> org.apache.avro.specific<\/strong> serializes the data.<\/p>\n<p><span style=\"font-weight: 400\">Furthermore, using the deserialization API provided for Avro, which is found in the package <strong>org.apache.avro.specific<\/strong>, Deserialize the data.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Avro Tutorial &#8211; Datatypes<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Avro supports a wide range of datatypes, which are listed below in the Apache Avro Tutorial:<\/span><\/p>\n<h3><span style=\"font-weight: 400\">i. Primitive Types<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Here is the list of Primitive Types which Avro supports:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>null:<\/strong> no value<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>boolean:<\/strong> a binary value<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>int:<\/strong> 32-bit signed integer<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>long:<\/strong> 64-bit signed integer<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>float:<\/strong> single precision (32-bit) IEEE 754 floating-point number<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>double:<\/strong> double precision (64-bit) IEEE 754 floating-point number<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>bytes:<\/strong> the sequence of 8-bit unsigned bytes<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>string:<\/strong> Unicode character sequence<\/span><\/li>\n<\/ul>\n<h3><span style=\"font-weight: 400\">ii. Complex Types<\/span><\/h3>\n<p><span style=\"font-weight: 400\">There are six kinds of complex data types which Avro supports : <\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Records<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Enums<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Arrays<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Maps<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Unions <\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Fixed<\/span><\/li>\n<\/ul>\n<h3><span style=\"font-weight: 400\">Comparison With Other Systems<\/span><\/h3>\n<p><span style=\"font-weight: 400\">There are various systems such as <em>Thrift<\/em>,<em> Protocol Buffers<\/em>, etc. which are similar to Avro in the functionality aspect. But there are some features where Avro differs from these systems, like:<\/span><\/p>\n<div id=\"attachment_22006\" style=\"width: 1210px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Avro-Comparison-01.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-22006\" class=\"wp-image-22006 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Avro-Comparison-01.jpg\" alt=\"Apache Avro tutorial\" width=\"1200\" height=\"628\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Avro-Comparison-01.jpg 1200w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Avro-Comparison-01-150x79.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Avro-Comparison-01-300x157.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Avro-Comparison-01-768x402.jpg 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Avro-Comparison-01-1024x536.jpg 1024w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><p id=\"caption-attachment-22006\" class=\"wp-caption-text\">Apache Avro Tutorial &#8211; Comparisons<\/p><\/div>\n<h4><span style=\"font-weight: 400\">a. Dynamic typing<\/span><\/h4>\n<p><span style=\"font-weight: 400\">There is no need to generate data in Avro.\u00a0Moreover, 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.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">b. Untagged data<\/span><\/h4>\n<p><span style=\"font-weight: 400\">While data is read, the schema is present. So, less type information needs to be encoded,\u00a0considerably that results in smaller serialization size.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">c. No manually-assigned field IDs<\/span><\/h4>\n<p><span style=\"font-weight: 400\">When processing data, both the old and new schemas are always present, while schema changes,\u00a0thus using field names, differences may be resolved symbolically.<\/span><\/p>\n<p><strong>Comparing:\u00a0<\/strong>As per the requirement, Avro supports both dynamic and static types. In order to specify schemas and their types, protocol buffers and thrift use <em>Interface Definition Languages (IDLs)<\/em>. Hence, in order to generate code for<em> serialization and deserialization<\/em>, it uses these IDLs.<\/p>\n<p><span style=\"font-weight: 400\">Moreover, Avro&#8217;s schema definition is in<em> JSON<\/em> and not in any proprietary IDL, unlike Thrift and Protocol Buffer.<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>Property<\/strong><\/td>\n<td><strong>Avro<\/strong><\/td>\n<td><strong>Thrift &amp; Protocol Buffer<\/strong><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Dynamic schema<\/span><\/td>\n<td><span style=\"font-weight: 400\">Yes<\/span><\/td>\n<td><span style=\"font-weight: 400\">No<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Built into Hadoop<\/span><\/td>\n<td><span style=\"font-weight: 400\">Yes<\/span><\/td>\n<td><span style=\"font-weight: 400\">No<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">The schema in JSON<\/span><\/td>\n<td><span style=\"font-weight: 400\">Yes<\/span><\/td>\n<td><span style=\"font-weight: 400\">No<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">No need to compile<\/span><\/td>\n<td><span style=\"font-weight: 400\">Yes<\/span><\/td>\n<td><span style=\"font-weight: 400\">No<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">No need to declare IDs<\/span><\/td>\n<td><span style=\"font-weight: 400\">Yes<\/span><\/td>\n<td><span style=\"font-weight: 400\">No<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Bleeding edge<\/span><\/td>\n<td><span style=\"font-weight: 400\">Yes<\/span><\/td>\n<td><span style=\"font-weight: 400\">No<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span style=\"font-weight: 400\">Features of Avro<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Some of the<strong> prominent Apache Avro Features<\/strong> are \u2212<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Basically, it is a language-neutral data serialization system.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">In many languages, we can process Avro. Like C, C++, C#, Java, Python, and Ruby.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Also, it can create a binary structured format. That\u00a0format is compressible as well as splittable. Thus we can efficiently use it as the input to <strong>Hadoop MapReduce jobs<\/strong>.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Moreover, it offers rich data structures.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Further, in JSON, Avro schemas defined, it facilitates implementation in the languages which already have JSON libraries.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">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.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">In <em>Remote Procedure Calls<\/em> (RPCs) also Avro is used. <\/span><\/li>\n<\/ul>\n<h3>Advantages and Disadvantages of Avro<\/h3>\n<p><span style=\"font-weight: 400\">Along with its features, Avro also attains some Pros and Cons. So, let\u2019s discuss them:<\/span><\/p>\n<h4><span style=\"font-weight: 400\">a. Pros of Apache Avro<\/span><\/h4>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Smallest size.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Compress block at a time; splittable.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Object structure maintained.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">It supports reading old data w\/ new schema.<\/span><\/li>\n<\/ul>\n<h4><span style=\"font-weight: 400\">b. Cons of Apache Avro<\/span><\/h4>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Need to use .NET 4.5, in the case of C# Avro, to make the best use of it.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Potentially slower serialization.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">In order to read\/write data, we need a schema.<\/span><\/li>\n<\/ul>\n<h3>Why Avro?<\/h3>\n<p>Apache Avro is needed &#8211;<br \/>\n1. Especially, for the serialization format for persistent data.<br \/>\n2. Wire format for communication.<\/p>\n<ul>\n<li>Among Hadoop nodes.<\/li>\n<li>From client programs to Hadoop services<\/li>\n<\/ul>\n<p>So, this was all in the Apache Avro tutorial. Hope you like our explanation.<\/p>\n<h3><span style=\"font-weight: 400\">Conclusion: Apache Avro Tutorial<\/span><\/h3>\n<p>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.<\/p>\n<p>Also, we discussed Avro examples, features, pros &amp; cons, and uses. Along with this, we also saw Avro schema and comparisons of Avro. Keep visiting DataFlair for more articles on Avro.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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, \u201cDoug Cutting\u201d, is what we call Apache Avro. While it&#46;&#46;&#46;<\/p>\n","protected":false},"author":7,"featured_media":22019,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[737,743,7007,8131,9940,15585,16128],"class_list":["post-21926","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-avro","tag-apache-avro","tag-apache-avro-tutorial","tag-introduction-to-avro","tag-learn-apache-avro","tag-prerequisites-for-apache-avro","tag-what-is-apache-avro","tag-why-avro"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Apache Avro Tutorial For Beginners | Learn Avro - DataFlair<\/title>\n<meta name=\"description\" content=\"Apache Avro tutorial:what is Avro,define data serialization,Avro examples,Avro schema,avro features,pros-cons of Avro,why Avro,use of Avro,comparisons\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/avro-tutorial\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apache Avro Tutorial For Beginners | Learn Avro - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Apache Avro tutorial:what is Avro,define data serialization,Avro examples,Avro schema,avro features,pros-cons of Avro,why Avro,use of Avro,comparisons\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/avro-tutorial\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-07-18T10:50:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-16T02:40:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Apache-Avro-Tutorial-01.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Apache Avro Tutorial For Beginners | Learn Avro - DataFlair","description":"Apache Avro tutorial:what is Avro,define data serialization,Avro examples,Avro schema,avro features,pros-cons of Avro,why Avro,use of Avro,comparisons","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/data-flair.training\/blogs\/avro-tutorial\/","og_locale":"en_US","og_type":"article","og_title":"Apache Avro Tutorial For Beginners | Learn Avro - DataFlair","og_description":"Apache Avro tutorial:what is Avro,define data serialization,Avro examples,Avro schema,avro features,pros-cons of Avro,why Avro,use of Avro,comparisons","og_url":"https:\/\/data-flair.training\/blogs\/avro-tutorial\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2018-07-18T10:50:34+00:00","article_modified_time":"2023-08-16T02:40:36+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Apache-Avro-Tutorial-01.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/avro-tutorial\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/avro-tutorial\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/beb0cab24b7aa54423a3b50e669a9dcd"},"headline":"Apache Avro Tutorial For Beginners | Learn Avro","datePublished":"2018-07-18T10:50:34+00:00","dateModified":"2023-08-16T02:40:36+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/avro-tutorial\/"},"wordCount":1508,"commentCount":1,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/avro-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Apache-Avro-Tutorial-01.jpg","keywords":["Apache Avro","Apache Avro Tutorial","introduction to Avro","Learn Apache Avro","prerequisites for apache avro","What is Apache Avro","why avro"],"articleSection":["AVRO Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/avro-tutorial\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/avro-tutorial\/","url":"https:\/\/data-flair.training\/blogs\/avro-tutorial\/","name":"Apache Avro Tutorial For Beginners | Learn Avro - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/avro-tutorial\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/avro-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Apache-Avro-Tutorial-01.jpg","datePublished":"2018-07-18T10:50:34+00:00","dateModified":"2023-08-16T02:40:36+00:00","description":"Apache Avro tutorial:what is Avro,define data serialization,Avro examples,Avro schema,avro features,pros-cons of Avro,why Avro,use of Avro,comparisons","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/avro-tutorial\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/avro-tutorial\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/avro-tutorial\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Apache-Avro-Tutorial-01.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Apache-Avro-Tutorial-01.jpg","width":1200,"height":628,"caption":"Apache Avro Tutorial For Beginners 2018 | Learn Avro"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/avro-tutorial\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"AVRO Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/avro\/"},{"@type":"ListItem","position":3,"name":"Apache Avro Tutorial For Beginners | Learn Avro"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/beb0cab24b7aa54423a3b50e669a9dcd","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c322416204232f4dd97ef3901b0a499a5d34d7ba7fe333f4bfe53a907873d293?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c322416204232f4dd97ef3901b0a499a5d34d7ba7fe333f4bfe53a907873d293?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c322416204232f4dd97ef3901b0a499a5d34d7ba7fe333f4bfe53a907873d293?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"DataFlair Team specializes in creating clear, actionable content on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Backed by industry expertise, we make learning easy and career-oriented for beginners and pros alike.","url":"https:\/\/data-flair.training\/blogs\/author\/dfteam3\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/21926","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=21926"}],"version-history":[{"count":3,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/21926\/revisions"}],"predecessor-version":[{"id":118047,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/21926\/revisions\/118047"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/22019"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=21926"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=21926"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=21926"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}