Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Apache Avro — Wikipédia
Apache Avro — Wikipédia 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.
Page d’aide sur l’homonymie

Pour les articles homonymes, voir Avro (homonymie).

Apache Avro
Description de l'image Apache Avro Logo 2023.svg.

Informations
Développé par Apache Software FoundationVoir et modifier les données sur Wikidata
Première version 11 janvier 2011[1]Voir et modifier les données sur Wikidata
Dernière version 1.11.5 (16 octobre 2025)[2]
1.12.1 (16 octobre 2025)[3]Voir et modifier les données sur Wikidata
Dépôt github.com/apache/avroVoir et modifier les données sur Wikidata
Écrit en Java, C, C++, C#, PHP, Python, Ruby, JavaScript, Perl et RustVoir et modifier les données sur Wikidata
Formats lus Avro Object Container File (d), Apache Avro Schema file format (d), Apache Avro IDL Data (d) et Apache Avro Protocol Data (d)Voir et modifier les données sur Wikidata
Formats écrits Avro Object Container File (d), Apache Avro Schema file format (d), Apache Avro IDL Data (d) et Apache Avro Protocol Data (d)Voir et modifier les données sur Wikidata
Type Format de sérialisation de données (d)Voir et modifier les données sur Wikidata
Licence Licence Apache 2.0Voir et modifier les données sur Wikidata
Site web avro.apache.orgVoir et modifier les données sur Wikidata

modifier - modifier le code - voir Wikidata (aide)

Avro est un framework de remote procedure call et de sérialisation de données élaboré au sein du projet Apache Hadoop. Il utilise JSON pour la définition des types de données et des protocoles, et sérialise les données dans un format binaire plus compact. La principale utilisation est dans Apache Hadoop, où il peut fournir à la fois un format de sérialisation pour les données persistantes, et un format "filaire" pour la communication entre les nœuds Hadoop, et de programmes client pour services Hadoop.

Il est similaire à Apache Thrift et Protocol Buffers, mais ne nécessite pas d'exécuter un programme de génération de code lors d'un changement de schéma (sauf si désiré pour les langages statiquement-typés).

Avro est reconnu et accepté par Apache Spark SQL comme source de données[4].

Fichier Avro Object Container

[modifier | modifier le code]

Un fichier Avro Object Container se compose de:

  • un en-tête, suivi par
  • un ou plusieurs blocs de données.

L'en-tête se compose de:

  • quatre octets ASCII 'O', 'b', 'j', suivi par 1.
  • les métadonnées du fichier, y compris la définition de schéma.
  • Le marqueur de synchronisation pour ce fichier. Il est constitué de 16 octets générés de façon aléatoire.

Pour les blocs de données Avro spécifie deux encodages de sérialisation[5]: binaire et JSON. La plupart des applications utiliseront 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 d'un schéma

[modifier | modifier le code]

Dans Avro, les schémas sont définis à l'aide de JSON. Ils sont composés de types primitifs (null, boolean, int, long, float, double, bytes,  string) ou complexes (record, enum, array, map, union, fixed).

Exemple de schéma :

 {
   "namespace": "example.avro",
   "type": "record",
   "name": "User",
   "fields": [
      {"name": "name", "type": "string"},
      {"name": "favorite_number",  "type": ["int", "null"]},
      {"name": "favorite_color", "type": ["string", "null"]}
   ] 
 }

La sérialisation et la désérialisation

[modifier | modifier le code]

Les données en Avro peuvent être stockées avec le schéma correspondant, ce qui signifie qu'un élément sérialisé peut être lu sans connaître le schéma à l'avance.

Exemple de sérialisation et de désérialisation code en Python

[modifier | modifier le code]

La 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())  # nécessite la connaissance du schéma pour pouvoir ecrire

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()

Fichier "users.avro" va contenir le schéma JSON et une représentation compact binaire[6] des données:

$ od -c users.avro
0000000    O   b   j 001 004 026   a   v   r   o   .   s   c   h   e   m
0000020    a 272 003   {   "   t   y   p   e   "   :       "   r   e   c
0000040    o   r   d   "   ,       "   n   a   m   e   s   p   a   c   e
0000060    "   :       "   e   x   a   m   p   l   e   .   a   v   r   o
0000100    "   ,       "   n   a   m   e   "   :       "   U   s   e   r
0000120    "   ,       "   f   i   e   l   d   s   "   :       [   {   "
0000140    t   y   p   e   "   :       "   s   t   r   i   n   g   "   ,
0000160        "   n   a   m   e   "   :       "   n   a   m   e   "   }
0000200    ,       {   "   t   y   p   e   "   :       [   "   i   n   t
0000220    "   ,       "   n   u   l   l   "   ]   ,       "   n   a   m
0000240    e   "   :       "   f   a   v   o   r   i   t   e   _   n   u
0000260    m   b   e   r   "   }   ,       {   "   t   y   p   e   "   :
0000300        [   "   s   t   r   i   n   g   "   ,       "   n   u   l
0000320    l   "   ]   ,       "   n   a   m   e   "   :       "   f   a
0000340    v   o   r   i   t   e   _   c   o   l   o   r   "   }   ]   }
0000360  024   a   v   r   o   .   c   o   d   e   c  \b   n   u   l   l
0000400   \0 211 266   / 030 334   ˪  **   P 314 341 267 234 310   5 213
0000420    6 004   ,  \f   A   l   y   s   s   a  \0 200 004 002 006   B
0000440    e   n  \0 016  \0 006   r   e   d 211 266   / 030 334   ˪  **
0000460    P 314 341 267 234 310   5 213   6
0000471

La désérialisation:


reader = DataFileReader(open("users.avro", "r"), DatumReader())  # le schéma est intégré dans le fichier avro
for user in reader:
    print user
reader.close()


Output:


{u'favorite_color': None, u'favorite_number': 256, u'name': u'Alyssa'}
{u'favorite_color': u'red', u'favorite_number': 7, u'name': u'Ben'}

Langages avec les Api

[modifier | modifier le code]

Bien qu'en principe, il soit possible d'utiliser tout type de langage avec Avro, les langages suivants disposent d'une Api[7],[8] :

  • C
  • C++
  • C#[9],[10],[11]
  • GO
  • Haskell[12]
  • Java
  • Perl
  • PHP
  • Python
  • Ruby
  • Scala

Avro IDL

[modifier | modifier le code]

En plus de prendre en charge JSON pour les types et les définitions de protocole, Avro inclut un support expérimental pour une autre syntaxe de langage de description d'interface (IDL) connue sous le nom d'Avro IDL. Précédemment connu sous le nom GenAvro, ce format est conçu  pour faciliter son adoption par les utilisateurs familiers avec des IDL et langages de programmation plus traditionnels, avec une syntaxe similaire à C / C ++, Protocol Buffers et autres.

Voir aussi

[modifier | modifier le code]
  • Apache Thrift
  • Protocol Buffers
  • Etch (protocole)
  • MessagePack
  • Apache Parquet
  • Apache Kafka
  • Apache Druid
  • Apache ORC

Références

[modifier | modifier le code]
  1. ↑ « https://projects.apache.org/json/projects/avro.json » (consulté le 8 avril 2020)
  2. ↑ « Release 1.11.5 », 16 octobre 2025 (consulté le 27 octobre 2025)
  3. ↑ « Release 1.12.1 », 16 octobre 2025 (consulté le 27 octobre 2025)
  4. ↑ (en) « 3 Reasons Why In-Hadoop Analytics are a Big Deal - Dataconomy », sur Dataconomy, 21 avril 2016 (consulté le 28 août 2020).
  5. ↑ « Apache Avro™ 1.8.2 Specification », sur avro.apache.org (consulté le 19 octobre 2017)
  6. ↑ « Apache Avro™ Specification: Data Serialization », sur avro.apache.org (consulté le 16 juin 2016)
  7. ↑ phunt, « GitHub - phunt/avro-rpc-quickstart: Apache Avro RPC Quick Start. Avro is a subproject of Apache Hadoop. », GitHub, sur GitHub (consulté le 13 avril 2016)
  8. ↑ « Supported Languages - Apache Avro - Apache Software Foundation » (consulté le 21 avril 2016)
  9. ↑ « Avro: 1.5.1 - ASF JIRA » (consulté le 13 avril 2016)
  10. ↑ « [AVRO-533] .NET implementation of Avro - ASF JIRA » (consulté le 13 avril 2016)
  11. ↑ « Supported Languages » (consulté le 13 avril 2016)
  12. ↑ « Native Haskell implementation of Avro », Thomas M. DuBuisson, Galois, Inc. (consulté le 8 août 2016)

Bibliographie

[modifier | modifier le code]
  • Tom White, Hadoop: The Definitive Guide, novembre 2010 (ISBN 978-1-4493-8973-4)
v · m
Écosystème Hadoop
Distributions Hadoop
  • Cloudera
  • Hortonworks
  • MapR
Base de données
  • HBase
Flux de données
  • Apache Sqoop
  • Apache Flume
  • Apache Kafka
  • Apache Storm
  • Apache Flink
Interrogation
  • Apache Hive
  • Spark SQL
  • Pig
Machine Learning
  • Apache Mahout
  • Apache Spark ML
SQL
  • Presto
  • Apache Hive
  • Apache Impala
  • Apache Drill
Gestionnaire de cluster
  • Hadoop YARN
  • Apache Mesos
  • Apache Spark
Format de fichier
  • RCFile
  • Apache Avro
  • Apache Parquet
  • Apache ORC
Vrac
  • Presto
  • Impala
  • Kudu
  • Pig
  • Apache ZooKeeper
  • icône décorative Portail de l’informatique
  • icône décorative Portail d’Internet
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=Apache_Avro&oldid=227973677 ».
Catégories :
  • Logiciel écrit en Java
  • Logiciel écrit en C
  • Logiciel écrit en C++
  • Logiciel écrit en C sharp
  • Logiciel écrit en PHP
  • Logiciel écrit en Python
  • Logiciel écrit en Ruby
  • Logiciel écrit en JavaScript
  • Logiciel écrit en Perl
  • Logiciel écrit en Rust
  • Protocole réseau sur la couche application
  • Format de sérialisation de données
  • Communication inter-processus
  • Écosystème Hadoop
Catégories cachées :
  • Page utilisant P178
  • Page utilisant P571
  • Page utilisant P348
  • Page utilisant P1324
  • Page utilisant P277
  • Logiciel catégorisé automatiquement par langage d'écriture
  • Page utilisant des données de Wikidata à traduire de l'anglais
  • Page utilisant P1072
  • Page utilisant P1073
  • Page utilisant P31
  • Page utilisant P275
  • Page utilisant P856
  • Article utilisant une Infobox
  • Portail:Informatique/Articles liés
  • Portail:Technologies/Articles liés
  • Portail:Internet/Articles liés
  • Portail:Médias/Articles liés
  • Portail:Société/Articles liés

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id