La foto mostra un parquet di legno grezzo

Come i file Parquet fanno risparmiare tempo e risorse

Come i file Parquet fanno risparmiare tempo e risorse 700 460 Nicola Lapenta

Un esempio reale di un dataset 1TB su provider Amazon S3

Quando si gestiscono dataset big data la modalità con cui vengono codificate le informazioni è molto importante, non solo per l’interpretazione ma soprattutto per i tempi di elaborazione dei contenuti. L’uso di formati di file inefficienti e l’archiviazione dei dati senza compressione influisce sulle prestazioni complessive e sulla scalabilità.

Questo articolo ha l’obiettivo di descrivere il formato Parquet e mostrare un esempio reale di come può far risparmiare tempo e risorse.

Contenuti

Introduzione

Il formato di file di dati open source Apache Parquet è nato con un progetto congiunto tra Twitter e Cloudera nel 2013. Dal 27 aprile 2015 è sponsorizzato dalla fondazione no-profit Apache Software Foundation (ASF).

L’ASF è una comunità costituita da sviluppatori che lavorano su progetti software open source caratterizzati da un processo di sviluppo distribuito e collaborativo. Ciascun progetto è gestito da un team di volontari che sono considerati i contributori attivi.

Formato Parquet

Apache Parquet è orientato alle colonne ed è stato progettato per l’archiviazione e la lettura di dataset big data. Fornisce un’efficiente compressione dei dati e schemi di codifica con prestazioni ottimizzate per gestire dati complessi, tipi di dati cioè che si riferiscono ad una combinazione di altri tipi di dati esistenti.

La caratteristica principale di questo formato è che è stato esplicitamente progettato per separare i metadati dai dati. Ciò consente di dividere le colonne in più file, oltre ad avere un singolo file di metadati che fa riferimento a più file di parquet.

Nell’esempio in figura 1 è presente una tabella con N colonne suddivise in M gruppi di righe. I metadati del file contengono le posizioni di tutte le posizioni iniziali dei metadati delle colonne. Maggiori dettagli su ciò che è contenuto nei metadati possono essere trovati nei file detti “thrift”.

La foto mostra la struttura di un file apache parquet

Figura 1 Formato Apache Parquet

I metadati vengono scritti dopo i dati per consentire la scrittura a passaggio singolo. Devono essere letti prima del file per trovare tutti i blocchi di colonna a cui sono interessati. I blocchi di colonne dovrebbero quindi essere letti in sequenza.

Questa struttura permette un notevole risparmio di spazio di archiviazione e una velocizzazione delle query di analisi perché è possibile utilizzare tecniche come il salto dei dati, per cui le query che recuperano valori di colonna specifici non devono leggere l’intera riga di dati.

Altri importanti vantaggi del formato Parquet:

  • Agnostico dal linguaggio utilizzato.
  • Compressione e decompressione dei dati ad alta efficienza.
  • Supporto tipi di dati complessi e strutture dati nidificate avanzate (array).
  • Utilizzo per casi d’uso di analisi OLAP (On-Line Analytical Processing), in genere insieme ai tradizionali database OLTP (On-Line Transaction Processing).

Confronto con file CSV

Il seguente esempio tratto dal sito databricks.com mette a confronto i miglioramenti ottenuti di un dataset di 1TB su provider Amazon S3 convertendo i dati da CSV a Parquet.

Tabella 1 Contronto formati CSV e Parquet

Dataset FormatSize on Amazon S3Query Run TimeData ScannedCost
CSV1 TB236 seconds1.15 TB$5.75
Parquet130 GB6.78 seconds2.51 GB$0.01
Savings87% less when using Parquet34x faster99% less data scanned99.7% savings

Il risultato ha evidenziato come il formato Parquet aiuta gli utenti a ridurre lo spazio di archiviazione di almeno un terzo su set di dati di grandi dimensioni. Ha inoltre notevolmente migliorato i tempi di scansione e quindi i costi complessivi di elaborazione.

Come mostrato in Tabella 1 nella terza colonna Query Run Time con l’utilizzo del formato Parquet si è ottenuta una velocità 34x superiore al formato CSV con un risparmio sui costi di oltre 99%.

Conclusioni

Apache Parquet è un formato di file a colonne che fornisce reali ottimizzazioni per velocizzare le query big data e risulta molto più efficiente rispetto a CSV o JSON. Permette una archiviazione con diversi tipi di dati (tabelle strutturate, immagini, video e documenti).

Consente di risparmiare spazio di archiviazione nel cloud utilizzando una compressione a colonna altamente efficiente e schemi di codifica flessibili per colonne. A oggi risulta il formato indispensabile per molte soluzioni big data di analisi.

Per approfondire i servizi che offro per questa tipologia di dati contattami direttamente dalla sezione contatti, sarà un piacere fornirti ulteriori informazioni utili per la tua attività.

Per approfondire la definizione aggiornata di big data leggi l’articolo: Cosa sono i Big Data. Facciamo chiarezza.

Pubblicato da: Nicola Lapenta

Fotografia iniziale: Andrej Lišakov – Unsplash

Fonti: Databricks, Apache Software Foundation, Apache Parquet, Wikipedia