Demistificare i formati di dati Hadoop: Avro, ORC e Parquet

Cos’è Avro/ORC/Parquet?

Avro è un formato di dati basato su righe slash un sistema di serializzazione dei dati rilasciato dal gruppo di lavoro Hadoop nel 2009. Lo schema dei dati è memorizzato come JSON (che significa leggibile all’uomo) nell’intestazione mentre il resto dei dati è memorizzato in formato binario. Un punto di forza di Avro è il suo robusto supporto per l’evoluzione dello schema.

ORC è un formato di dati a colonne di righe altamente ottimizzato per la lettura, la scrittura e l’elaborazione dei dati in Hive ed è stato creato da Hortonworks nel 2013 come parte dell’iniziativa Stinger per velocizzare Hive. I file ORC sono costituiti da strisce di dati dove ogni striscia contiene l’indice, i dati di riga e il piè di pagina (dove le statistiche chiave come il conteggio, il massimo, il minimo e la somma di ogni colonna sono comodamente memorizzati nella cache).

Parquet è un formato di dati a colonne di riga creato da Cloudera e Twitter nel 2013. I file Parquet consistono in gruppi di righe, intestazione e piè di pagina, e in ogni gruppo di righe i dati nelle stesse colonne sono memorizzati insieme. Parquet è specializzato nella memorizzazione ed elaborazione efficiente di tipi di dati annidati.

Cose da considerare

Lettura/Scrittura Intensiva & Modello di query: I formati di dati basati sulle righe sono in generale migliori per la memorizzazione di dati ad alta intensità di scrittura perché l’aggiunta di nuovi record è più facile. Se solo un piccolo sottoinsieme di colonne sarà interrogato frequentemente, i formati a colonne saranno i vostri buoni amici, poiché solo le colonne necessarie saranno accessibili e trasmesse (mentre i formati a righe hanno bisogno di estrarre tutte le colonne).

Compressione: La compressione è uno degli aspetti chiave da considerare qui poiché la compressione aiuta a ridurre le risorse richieste per memorizzare e trasmettere i dati. Specialmente quando si ottengono enormi quantità di dati (ad esempio i dati IoT), è necessaria una buona compressione. I formati a colonne sono migliori di quelli a righe in termini di compressione perché memorizzare lo stesso tipo di valori insieme permette una compressione più efficiente. Per essere specifici, viene utilizzata una codifica diversa e più efficiente per ogni colonna. Questo è anche il motivo per cui i formati a colonne sono buoni per i set di dati sparsi! ORC ha il miglior tasso di compressione di tutti e tre, grazie alle sue strisce.

Schema Evolution: Una sfida nella gestione dei grandi dati è il frequente cambiamento dello schema dei dati: per esempio aggiungendo/togliendo colonne e cambiando i nomi delle colonne. Se il vostro schema dati cambia spesso e avete bisogno di un’alta compatibilità per le vostre vecchie/nuove applicazioni, Avro è qui per voi. Inoltre, lo schema dei dati di Avro è in JSON e Avro è in grado di mantenere i dati compatti anche quando esistono molti schemi diversi.

Colonne annidate: Se avete molte colonne annidate complesse nel vostro set di dati e spesso interrogate solo un sottoinsieme delle sottocolonne, Parquet sarebbe una buona scelta. Parquet è implementato utilizzando l’algoritmo di frantumazione e assemblaggio dei record descritto nel documento di Dremel, che permette di accedere e recuperare le sottocolonne senza estrarre il resto della colonna annidata.

Supporto della piattaforma: Ultimo ma non meno importante, dovreste considerare la piattaforma/framework che state usando quando scegliete un formato di dati, poiché i formati di dati si comportano diversamente a seconda di dove sono usati. ORC funziona meglio con Hive (poiché è fatto per Hive). Spark fornisce un grande supporto per l’elaborazione dei formati Parquet. Avro è spesso una buona scelta per Kafka.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *