AVRO - Panoramica
Per trasferire i dati su una rete o per la loro archiviazione persistente, è necessario serializzare i dati. Prima delserialization APIs fornito da Java e Hadoop, abbiamo un'utilità speciale, chiamata Avro, una tecnica di serializzazione basata su schema.
Questo tutorial ti insegna come serializzare e deserializzare i dati utilizzando Avro. Avro fornisce librerie per vari linguaggi di programmazione. In questo tutorial, dimostriamo gli esempi utilizzando la libreria Java.
Cos'è Avro?
Apache Avro è un sistema di serializzazione dei dati indipendente dalla lingua. È stato sviluppato da Doug Cutting, il padre di Hadoop. Poiché le classi scrivibili Hadoop mancano di portabilità della lingua, Avro diventa molto utile, poiché si occupa di formati di dati che possono essere elaborati da più lingue. Avro è uno strumento preferito per serializzare i dati in Hadoop.
Avro ha un sistema basato su schema. Uno schema indipendente dalla lingua è associato alle sue operazioni di lettura e scrittura. Avro serializza i dati che hanno uno schema integrato. Avro serializza i dati in un formato binario compatto, che può essere deserializzato da qualsiasi applicazione.
Avro utilizza il formato JSON per dichiarare le strutture di dati. Attualmente supporta linguaggi come Java, C, C ++, C #, Python e Ruby.
Schemi Avro
Avro dipende molto da esso schema. Consente la scrittura di tutti i dati senza alcuna conoscenza preliminare dello schema. Serializza rapidamente e i dati serializzati risultanti sono di dimensioni inferiori. Lo schema viene archiviato insieme ai dati Avro in un file per qualsiasi ulteriore elaborazione.
In RPC, il client e il server si scambiano gli schemi durante la connessione. Questo scambio aiuta nella comunicazione tra campi con lo stesso nome, campi mancanti, campi extra, ecc.
Gli schemi Avro sono definiti con JSON che ne semplifica l'implementazione nei linguaggi con librerie JSON.
Come Avro, ci sono altri meccanismi di serializzazione in Hadoop come Sequence Files, Protocol Buffers, e Thrift.
Confronto con parsimonia e buffer di protocollo
Thrift e Protocol Bufferssono le biblioteche più competenti con Avro. Avro differisce da questi framework nei seguenti modi:
Avro supporta i tipi dinamici e statici secondo il requisito. I buffer di protocollo e il risparmio utilizzano i linguaggi di definizione dell'interfaccia (IDL) per specificare gli schemi ei relativi tipi. Questi IDL vengono utilizzati per generare codice per la serializzazione e la deserializzazione.
Avro è integrato nell'ecosistema Hadoop. I buffer parsimoniosi e di protocollo non sono costruiti nell'ecosistema Hadoop.
A differenza di Thrift e Protocol Buffer, la definizione dello schema di Avro è in JSON e non in alcun IDL proprietario.
Proprietà | Avro | Risparmio e tampone di protocollo |
---|---|---|
Schema dinamico | sì | No |
Integrato in Hadoop | sì | No |
Schema in JSON | sì | No |
Non c'è bisogno di compilare | sì | No |
Non c'è bisogno di dichiarare ID | sì | No |
Bleeding edge | sì | No |
Caratteristiche di Avro
Di seguito sono elencate alcune delle caratteristiche principali di Avro:
Avro è un language-neutral sistema di serializzazione dei dati.
Può essere elaborato da molti linguaggi (attualmente C, C ++, C #, Java, Python e Ruby).
Avro crea un formato strutturato binario che è entrambe le cose compressible e splittable. Quindi può essere utilizzato in modo efficiente come input per i lavori di Hadoop MapReduce.
Avro fornisce rich data structures. Ad esempio, puoi creare un record che contiene una matrice, un tipo enumerato e un sub record. Questi tipi di dati possono essere creati in qualsiasi lingua, possono essere elaborati in Hadoop e i risultati possono essere inviati a una terza lingua.
Avro schemas definito in JSON, facilita l'implementazione nei linguaggi che dispongono già di librerie JSON.
Avro crea un file autodescrittivo denominato Avro Data File, in cui archivia i dati insieme al relativo schema nella sezione dei metadati.
Avro viene utilizzato anche nelle chiamate di procedura remota (RPC). Durante RPC, client e server si scambiano schemi nell'handshake di connessione.
Funzionamento generale di Avro
Per utilizzare Avro, è necessario seguire il flusso di lavoro indicato:
Step 1- Crea schemi. Qui devi progettare lo schema Avro in base ai tuoi dati.
Step 2- Leggi gli schemi nel tuo programma. È fatto in due modi:
By Generating a Class Corresponding to Schema- Compilare lo schema utilizzando Avro. Questo genera un file di classe corrispondente allo schema
By Using Parsers Library - È possibile leggere direttamente lo schema utilizzando la libreria dei parser.
Step 3 - Serializzare i dati utilizzando l'API di serializzazione fornita per Avro, che si trova nel file package org.apache.avro.specific.
Step 4 - Deserializzare i dati utilizzando l'API di deserializzazione fornita per Avro, che si trova nel file package org.apache.avro.specific.