AVRO - Aperçu
Pour transférer des données sur un réseau ou pour son stockage persistant, vous devez sérialiser les données. Avant leserialization APIs fourni par Java et Hadoop, nous avons un utilitaire spécial, appelé Avro, une technique de sérialisation basée sur des schémas.
Ce didacticiel vous apprend à sérialiser et désérialiser les données à l'aide d'Avro. Avro fournit des bibliothèques pour divers langages de programmation. Dans ce didacticiel, nous présentons les exemples utilisant la bibliothèque Java.
Qu'est-ce qu'Avro?
Apache Avro est un système de sérialisation de données indépendant du langage. Il a été développé par Doug Cutting, le père de Hadoop. Étant donné que les classes inscriptibles Hadoop manquent de portabilité linguistique, Avro devient très utile, car il traite des formats de données pouvant être traités par plusieurs langues. Avro est un outil privilégié pour sérialiser les données dans Hadoop.
Avro a un système basé sur des schémas. Un schéma indépendant du langage est associé à ses opérations de lecture et d'écriture. Avro sérialise les données qui ont un schéma intégré. Avro sérialise les données dans un format binaire compact, qui peut être désérialisé par n'importe quelle application.
Avro utilise le format JSON pour déclarer les structures de données. Actuellement, il prend en charge des langages tels que Java, C, C ++, C #, Python et Ruby.
Schémas Avro
Avro dépend fortement de son schema. Il permet à toutes les données d'être écrites sans connaissance préalable du schéma. Il sérialise rapidement et les données sérialisées qui en résultent sont de moindre taille. Le schéma est stocké avec les données Avro dans un fichier pour tout traitement ultérieur.
Dans RPC, le client et le serveur échangent des schémas pendant la connexion. Cet échange aide à la communication entre les mêmes champs nommés, les champs manquants, les champs supplémentaires, etc.
Les schémas Avro sont définis avec JSON qui simplifie son implémentation dans les langages avec des bibliothèques JSON.
Comme Avro, il existe d'autres mécanismes de sérialisation dans Hadoop tels que Sequence Files, Protocol Buffers, et Thrift.
Comparaison avec les tampons Thrift et Protocol
Thrift et Protocol Bufferssont les bibliothèques les plus compétentes avec Avro. Avro diffère de ces frameworks des manières suivantes -
Avro prend en charge les types dynamiques et statiques selon l'exigence. Protocol Buffers et Thrift utilisent des langages de définition d'interface (IDL) pour spécifier les schémas et leurs types. Ces IDL sont utilisés pour générer du code pour la sérialisation et la désérialisation.
Avro est construit dans l'écosystème Hadoop. Les tampons d'épargne et de protocole ne sont pas intégrés à l'écosystème Hadoop.
Contrairement à Thrift et Protocol Buffer, la définition de schéma d'Avro est en JSON et non dans un IDL propriétaire.
Propriété | Avro | Tampon d'économie et de protocole |
---|---|---|
Schéma dynamique | Oui | Non |
Intégré à Hadoop | Oui | Non |
Schéma en JSON | Oui | Non |
Pas besoin de compiler | Oui | Non |
Pas besoin de déclarer les identifiants | Oui | Non |
Bord de saignement | Oui | Non |
Caractéristiques d'Avro
Voici quelques-unes des principales caractéristiques d'Avro -
Avro est un language-neutral système de sérialisation des données.
Il peut être traité par de nombreux langages (actuellement C, C ++, C #, Java, Python et Ruby).
Avro crée un format structuré binaire qui est à la fois compressible et splittable. Par conséquent, il peut être utilisé efficacement comme entrée des travaux Hadoop MapReduce.
Avro fournit rich data structures. Par exemple, vous pouvez créer un enregistrement contenant un tableau, un type énuméré et un sous-enregistrement. Ces types de données peuvent être créés dans n'importe quelle langue, peuvent être traités dans Hadoop et les résultats peuvent être transmis à une troisième langue.
Avro schemas défini dans JSON, facilite l'implémentation dans les langages qui ont déjà des bibliothèques JSON.
Avro crée un fichier auto-descriptif nommé Avro Data File, dans lequel il stocke les données avec son schéma dans la section des métadonnées.
Avro est également utilisé dans les appels de procédure à distance (RPC). Pendant le RPC, le client et le serveur échangent des schémas lors de l'établissement de liaison.
Fonctionnement général d'Avro
Pour utiliser Avro, vous devez suivre le flux de travail donné -
Step 1- Créez des schémas. Ici, vous devez concevoir le schéma Avro en fonction de vos données.
Step 2- Lisez les schémas dans votre programme. Cela se fait de deux manières -
By Generating a Class Corresponding to Schema- Compilez le schéma à l'aide d'Avro. Cela génère un fichier de classe correspondant au schéma
By Using Parsers Library - Vous pouvez lire directement le schéma à l'aide de la bibliothèque d'analyseurs.
Step 3 - Sérialiser les données à l'aide de l'API de sérialisation fournie pour Avro, qui se trouve dans le package org.apache.avro.specific.
Step 4 - Désérialiser les données à l'aide de l'API de désérialisation fournie pour Avro, qui se trouve dans le package org.apache.avro.specific.