Apache Parquet è un formato di archiviazione colonnare open source utilizzato per memorizzare, gestire e analizzare in modo efficiente grandi set di dati. A differenza dei formati di archiviazione basati su righe come CSV o JSON, Parquet organizza i dati in colonne per migliorare le prestazioni e ridurre i costi del data storage.
Le organizzazioni utilizzano formati di file diversi per soddisfare altre esigenze a livello di dati. Molti formati tradizionali organizzano i dati in righe, ottimizzando la semplicità del trasferimento dei dati e la leggibilità.
Parquet adotta un approccio fondamentalmente diverso, poiché raggruppa in colonne i tipi di dati simili. Questa struttura a colonne ha contribuito a trasformare il modo in cui le organizzazioni gestiscono l'analytics su larga scala, consentendo una compressione superiore e un accesso mirato ai dati.
Ad esempio, quando analizza le transazioni dei clienti, un database di retail che utilizza Parquet può accedere a colonne specifiche come date e importi degli acquisti senza caricare interi record dei clienti. Questa capacità di accedere a colonne specifiche può ridurre sia i tempi di elaborazione che i costi dello storage.
Il formato di Parquet è utile in 3 aree chiave:
Un altro dei motivi per cui l'adozione di Parquet è molto diffusa è la sua compatibilità con sistemi distribuiti e strumenti di dati, come Apache Spark, Apache Hive e Apache Hadoop.
Rispetto ad altri formati di file, Parquet trasforma il data storage e l'accesso ai dati attraverso tre funzionalità chiave:
Apache Parquet trasforma sistematicamente i dati non elaborati in un formato colonnare ottimizzato, migliorando significativamente sia l'efficienza dello storage che le prestazioni delle query.
Ecco come Parquet elabora i dati:
Quando si scrivono dati in un file Parquet, il formato divide innanzitutto i dati in gruppi di righe. Ogni gruppo di righe rappresenta un'unità indipendente del set di dati, che consente l'elaborazione parallela e la gestione efficiente della memoria per operazioni su larga scala. Questa strategia di partizionamento costituisce la base per l'accesso ai dati ad alte prestazioni di Parquet.
All'interno di ogni gruppo di righe, l'algoritmo di assemblaggio di Parquet riorganizza i dati per colonna anziché per riga. I tipi di dati simili vengono raggruppati in blocchi di colonne, consentendo una codifica specializzata in base alle caratteristiche dei dati. Ad esempio, una colonna di date può essere ottimizzata in modo diverso rispetto a una colonna di valori numerici.
Parquet applica un processo di ottimizzazione in due fasi. Innanzitutto, utilizza schemi di codifica come la codifica RLE (Run-Length Encoding) per rappresentare in modo efficiente i valori ripetuti, particolarmente utile per le colonne con molte voci duplicate. Quindi, applica algoritmi di compressione come Snappy o Gzip per ridurre ulteriormente i requisiti di storage.
Il formato crea metadati completi, inclusi schemi di file e tipi di dati, statistiche per ogni colonna, posizioni e struttura dei gruppi di righe. Questi metadati rendono più efficiente la pianificazione e l'ottimizzazione delle query.
Durante la lettura dei dati Parquet, i motori di query consultano prima i metadati per identificare le colonne pertinenti. Solo i blocchi di colonne necessari vengono letti dallo storage e i dati vengono decompressi e decodificati in base alle esigenze.
Apache Parquet può offrire vantaggi significativi alle organizzazioni che gestiscono operazioni su larga scala utilizzando i dati.
I benefici includono:
La struttura dei dati di Parquet può rendere l'esecuzione delle query analitiche molto più veloce. Quando le applicazioni necessitano di dati specifici, accedono solo alle colonne pertinenti, riducendo i tempi di query da ore a minuti. Questo accesso mirato rende Parquet prezioso per le organizzazioni che eseguono analytics su larga scala.
A differenza dei formati più semplici, Parquet è in grado di gestire in modo efficiente strutture di dati e array annidati, comuni nelle applicazioni moderne. Questa funzionalità lo rende utile per le organizzazioni che gestiscono tipi di dati complessi, come strutture simili a JSON nella web o analytics o gli array annidati nei dati dei sensori provenienti da dispositivi Internet of Things (IoT).
Il formato colonnare di Parquet cambia radicalmente il modo in cui i dati vengono memorizzati e compressi. Raggruppando tipi di dati simili, Parquet può applicare diversi algoritmi di codifica a ciascun tipo di dati, ottenendo rapporti di compressione migliori rispetto a formati come CSV o JSON.
Ad esempio, un set di dati contenente milioni di transazioni con i clienti potrebbe richiedere terabyte di storage in formato CSV, ma solo una frazione di tale spazio se memorizzato sotto forma di file Parquet.
Le moderne architetture di dati richiedono spesso una perfetta integrazione degli strumenti, offerta da Parquet attraverso il supporto nativo per i principali framework. Indipendentemente dal fatto che i team utilizzino Python per l'analisi, Java per lo sviluppo di applicazioni o Apache Spark per l'elaborazione dei dati, Parquet può contribuire a garantire un accesso coerente ai dati in tutta l'azienda.
L'integrazione nativa di Parquet con Hadoop lo rende particolarmente efficace per l'elaborazione dei big data. Poiché Parquet è stato creato per l'Hadoop Distributed File System (HDFS), in genere offre prestazioni migliori rispetto ai formati di file tradizionali negli ambienti Hadoop. Quando si utilizza Parquet con Hadoop, le organizzazioni possono eseguire le query più velocemente e memorizzare i dati in modo più efficiente, spesso utilizzando una quantità notevolmente inferiore dello spazio di storage di cui necessitavano prima.
Apache Parquet può soddisfare una serie di esigenze di ingegneria dei dati in vari settori e applicazioni.
Alcune delle sue implementazioni più importanti includono:
Le organizzazioni che creano data lake e data warehouse spesso scelgono Parquet come formato di storage principale. Le sue efficienti prestazioni di compressione e query lo rendono ideale per memorizzare grandi volumi di dati mantenendo un rapido accesso agli strumenti di business intelligence e alle SQL query.
Ad esempio, una catena retail che utilizza Parquet per memorizzare i dati delle transazioni può analizzare i pattern di vendita in migliaia di negozi utilizzando meno storage rispetto ai formati tradizionali.
I data scientist e gli analisti che lavorano con framework come Apache Spark o la libreria Pandas di Python traggono beneficio dalle prestazioni ottimizzate di Parquet per le query analitiche. Sebbene formati come Avro spesso siano eccellenti nell'elaborazione a livello di record, molti trovano il formato di file Parquet particolarmente efficace per l'analytics.
Ad esempio, una società di servizi finanziari potrebbe utilizzare Parquet per memorizzare dati di mercato, consentendo agli analisti di elaborare milioni di eventi di trading e calcolare metriche di rischio quasi in tempo reale.
Le pipeline di dati moderne usano spesso Parquet quale formato intermedio o di destinazione durante i processi di estrazione, trasformazione e caricamento (ETL). La sua compatibilità con i framework come Apache Spark e il supporto per l'evoluzione degli schemi lo rendono utile per i workflow di ingegneria dei dati che devono gestire strutture di dati in evoluzione.
Ad esempio, le organizzazioni sanitarie potrebbero utilizzare Parquet per trasformare in modo efficiente le cartelle cliniche dei pazienti da più sistemi in un formato unificato, con funzionalità di evoluzione degli schemi che gestiscono automaticamente nuovi campi di dati senza interrompere i processi esistenti.
Ecco come il formato di file Parquet si confronta con altri comuni formati di storage:
Formati tradizionali come CSV e JSON memorizzano i dati in righe, il che li rende ideali per i trasferimenti di dati semplici e per la leggibilità da parte degli esseri umani. Tuttavia, quando si parla di analytics su larga scala, la lettura dei file Parquet offre vantaggi significativi.
Mentre un CSV deve scansionare intere righe anche quando si interrogano singole colonne, lo storage colonnare di Parquet consente l'accesso diretto a elementi di dati specifici. Ad esempio, l'analisi di una singola colonna in un set di dati a livello di petabyte potrebbe richiedere la lettura dell'intero file CSV, mentre Parquet accederebbe solo ai blocchi di colonne pertinenti.
Avro e Parquet sono utili in diversi casi d'uso nell'ecosistema dei dati. Il formato basato su righe di Avro eccelle negli scenari di serializzazione e streaming, rendendolo ideale per la registrazione di singoli eventi o transazioni.
Il formato di file Parquet, al contrario, è ottimizzato per i workload analitici in cui le organizzazioni devono analizzare colonne specifiche con milioni di record.
Ad esempio, una piattaforma di e-commerce potrebbe utilizzare Avro per acquisire gli eventi degli ordini in tempo reale, ma convertire questi dati in Parquet per lo storage a lungo termine e per l'analisi.
La forza di Apache Parquet non risiede solo nelle specifiche del suo formato, ma anche nel suo solido ecosistema di strumenti e framework di supporto.
Alcune delle tecnologie più significative nell'ecosistema di Parquet includono:
Parquet si integra in modo ottimale con i principali framework di elaborazione dei dati. Apache Spark offre funzionalità di analytics ad alte prestazioni, mentre Hadoop consente l'elaborazione distribuita su grandi cluster.
Apache Arrow può migliorare ulteriormente questo ecosistema di elaborazione consentendo la condivisione rapida ed efficiente dei dati tra sistemi e l'accesso diretto ai dati, tutte funzionalità che migliorano le prestazioni quando si utilizzano framework come Spark e Hadoop.
Le organizzazioni possono abbinare questi framework a Parquet per creare pipeline di dati efficienti che vanno da gigabyte a petabyte.
I data engineer possono lavorare con Parquet attraverso più interfacce di programmazione. Gli sviluppatori Python in genere utilizzano Pandas per la manipolazione dei dati, mentre le applicazioni Java utilizzano librerie Parquet native.
I principali provider di cloud, tra cui Amazon Web Services, Google Cloud Platform, Microsoft Azure e IBM Cloud, offrono supporto nativo per Parquet.
Parquet è compatibile anche con data warehouse e motori di query basati su cloud come Amazon Athena, Google BigQuery e IBM Db2 Warehouse.
IBM Storage DS8000 è il sistema di storage più veloce, affidabile e sicuro per IBM zSystems e server IBM Power.
IBM Storage è una famiglia di hardware di data storage, storage software-defined e software di gestione dello storage.
IBM fornisce supporto proattivo per i server web e per l'infrastruttura dei data center al fine di ridurre i tempi di inattività e migliorare la disponibilità dell'IT.