vendredi 27 janvier 2017

apache avro

Résultat de recherche d'images pour "apache avro"

Avro est un appel de procédure à distance et une structure de sérialisation de données développée dans le projet Hadoop d'Apache. Il utilise JSON pour définir les types de données et les protocoles, et sérialise les données dans un format binaire compact. Son utilisation principale est Apache Hadoop, où il peut fournir à la fois un format de sérialisation pour les données persistantes, et un format fil pour la communication entre les noeuds Hadoop, et des programmes clients aux services Hadoop.

Il est semblable à Thrift, mais ne nécessite pas d'exécuter un programme de génération de code quand un schéma change (sauf si désiré pour les langues statiquement-typées).

Apache Spark SQL peut accéder à Avro en tant que source de données.
Un fichier conteneur d'objets Avro se compose de:

Un en-tête de fichier, suivi de
Un ou plusieurs blocs de données de fichier.
Un en-tête de fichier se compose de:

Quatre octets, ASCII 'O', 'b', 'j', suivis de 1.
Des métadonnées de fichier, y compris la définition du schéma.
Le marqueur de synchronisation de 16 octets, généré de façon aléatoire pour ce fichier.
Pour les blocs de données Avro spécifie deux encodages de sérialisation: [3] binaire et JSON. La plupart des applications utilisent le codage binaire, car il est plus petit et plus rapide. Pour le débogage et les applications Web, l'encodage JSON peut parfois être approprié.
Définition du schéma
Les schémas Avro sont définis à l'aide de JSON. Les schémas sont composés de types primitifs (null, boolean, int, long, flottant, double, octets et chaîne) et des types complexes (record, enum, array, map, union et fixed).

Exemple de schéma simple:
{
   "namespace": "example.avro",
   "type": "record",
   "name": "User",
   "fields": [
      {"name": "name", "type": "string"},
      {"name": "favorite_number",  "type": ["int", "null"]},
      {"name": "favorite_color", "type": ["string", "null"]}
   ] 
 }

Sérialisation et désérialisation
Les données d'Avro peuvent être stockées avec leur schéma correspondant, ce qui signifie que l'élément sérialisé peut être lu sans connaître le schéma à l'avance.

Exemple de code de sérialisation et de désérialisation en Python
Sérialisation:
import avro.schema
from avro.datafile import DataFileReader, DataFileWriter
from avro.io import DatumReader, DatumWriter

schema = avro.schema.parse(open("user.avsc").read())  # need to know the schema to write

writer = DataFileWriter(open("users.avro", "w"), DatumWriter(), schema)
writer.append({"name": "Alyssa", "favorite_number": 256})
writer.append({"name": "Ben", "favorite_number": 7, "favorite_color": "red"})
writer.close()

Author:

Related Posts:

  • MongoDB MongoDB est un programme de base de données libre et open source multi-plateforme orienté docume… Read More
  • Zookeeper Zookeeper I propose to spend a little time together to discover Zookeeper which is regularly found … Read More
  • Apache Pig Apache Pig est une plate-forme de haut niveau pour la création de programmes exécutés sur Apache Ha… Read More
  • Apache Velocity Apache Velocity est un moteur de modèle basé sur Java qui fournit un langage de modèle pour référe… Read More
  • HBase HBase est une base de données open source, non relationnelle, distribuée basée sur le modèle BigTab… Read More
  • Apache Hive Apache Hive est une infrastructure d'entrepôt de données construite sur le dessus de Hadoop pour f… Read More
  • Apache Flume Apache Flume est un service distribué, fiable et disponible pour collecter, regrouper et déplace… Read More
  • apache avro Avro est un appel de procédure à distance et une structure de sérialisation de données développée … Read More

0 commentaires: