Super Sale WeekClaude Skills — 20% OFF
Glossary

Padroneggiare i file Parquet: struttura, casi d'uso e vantaggi principali

Powerdrill Bloom·
Padroneggiare i file Parquet: struttura, casi d'uso e vantaggi principali

Un file Parquet memorizza i dati per colonna anziché per riga. Il progetto Apache Parquet lo descrive come "un formato di file di dati open source orientato alle colonne, progettato per l'archiviazione e il recupero efficiente dei dati". Questa singola scelta di progettazione spiega perché è più piccolo, più veloce da interrogare e più difficile da aprire con un doppio clic.

Cos'è un file Parquet?

Parquet è un formato di file per dati tabulari, gestito come progetto Apache. La documentazione ufficiale afferma che "fornisce schemi di compressione e codifica ad alte prestazioni per gestire dati complessi in blocco". Aggiunge che il formato "è supportato in molti linguaggi di programmazione e strumenti di analisi".

La proprietà distintiva è l'orientamento. Un CSV scrive una riga alla volta: ogni campo del record uno, poi ogni campo del record due. Parquet scrive una colonna alla volta: ogni valore della prima colonna, poi ogni valore della seconda.

Sembra un dettaglio tecnico, ma ha due grandi conseguenze. I valori in una singola colonna tendono a essere simili tra loro, il che li rende molto più comprimibili rispetto a una riga mista. Inoltre, una query che necessita di tre colonne su novanta può leggere solo quelle tre, anziché scansionare ogni riga per poi scartarne la maggior parte.

Il formato è specificato formalmente. La documentazione di Apache rileva che "il repository parquet-format ospita la specifica ufficiale del formato di file Parquet, definendo come i dati sono strutturati e archiviati".

Come è strutturato un file Parquet

L'involucro

Ogni file Parquet si apre e si chiude con gli stessi quattro byte. La specifica mostra un "magic number di 4 byte 'PAR1'" all'inizio e lo stesso magic number alla fine.

Tra di essi si trovano i dati e, verso la fine, i metadati. Subito prima del magic number di chiusura si trova una "lunghezza di 4 byte in byte dei metadati del file (little endian)". Questo valore indica a un lettore quanto tornare indietro per trovare il blocco dei metadati.

Gruppi di righe e blocchi di colonne

All'interno dell'involucro, i dati sono divisi due volte. La specifica descrive un file con "N colonne in questa tabella, suddivise in M gruppi di righe".

Un gruppo di righe è una sezione orizzontale, ovvero un lotto di righe. All'interno di ciascun gruppo di righe, i valori di ciascuna colonna sono memorizzati insieme come un blocco di colonna (column chunk). Quindi un file con 90 colonne e 10 gruppi di righe contiene 900 blocchi di colonne, ciascuno dei quali è una sequenza contigua di valori di una singola colonna.

Questa doppia divisione è ciò che rende possibile la lettura selettiva. Una query può saltare interi gruppi di righe che non possono contenere righe corrispondenti, per poi leggere solo i blocchi di colonne necessari da quelli rimanenti.

Perché i metadati si trovano alla fine

Questo sorprende chi si aspetta un'intestazione. La documentazione di Apache ne spiega direttamente il motivo: "i metadati del file vengono scritti dopo i dati per consentire la scrittura in un unico passaggio".

Un processo di scrittura che trasmette un flusso di dati di grandi dimensioni non conosce le posizioni finali dei byte di ciascun blocco finché non li ha scritti. Posizionare i metadati alla fine significa non dover mai tornare indietro a correggere un'intestazione.

Il modello di lettura deriva da questo. Secondo la documentazione, i metadati del file "contengono le posizioni di tutti i punti di inizio dei blocchi di colonne". Aggiunge che "i lettori dovrebbero prima leggere i metadati del file per trovare tutti i blocchi di colonne a cui sono interessati".

A cosa serve Parquet

In genere ci si imbatte in un file .parquet in una di queste quattro situazioni.

Esportazioni da data warehouse. Quando si esporta una tabella di grandi dimensioni da un moderno data warehouse, questo è spesso il formato predefinito, poiché il file rimane gestibile.

Archiviazione in data lake. I file memorizzati in object storage cloud lo utilizzano comunemente, proprio perché i motori di calcolo possono leggere un sottoinsieme di colonne senza scaricare tutto.

Passaggi di consegne tra team. Un ingegnere dei dati che deve inviarti un anno di transazioni sceglierà spesso questo formato anziché un CSV, che sarebbe diverse volte più grande.

Interscambio tra strumenti di analisi. Poiché il formato è supportato da molti linguaggi e strumenti, si sposta tra i sistemi senza richiedere una fase di conversione intermedia.

Il filo conduttore è la dimensione. Diventa la scelta ovvia nel momento in cui un CSV smette di essere comodo da spostare.

Parquet vs CSV

Parquet CSV
Orientamento Orientato alle colonne Orientato alle righe
Leggibile in un editor di testo No, è binario
Dimensione tipica del file Più piccolo, grazie alla compressione delle colonne Più grande a parità di dati
Lettura di poche colonne Legge solo quei blocchi di colonne Legge l'intero file
Tipi di dati Inclusi nei metadati del file Dedotti da qualsiasi programma lo apra
Si apre con un doppio clic In genere no Di solito si apre in un foglio di calcolo
Ideale per Tabelle grandi, query ripetute Tabelle piccole, ispezione rapida, condivisione universale

Il comportamento dei tipi merita una nota. Un CSV non sa se 00123 sia un numero o una stringa, motivo per cui gli zeri iniziali e le date vengono alterati durante l'importazione. Parquet registra i tipi nei suoi metadati, quindi il valore scritto corrisponde esattamente a quello letto.

Per quanto riguarda l'approccio orientato alle righe di questo confronto, la guida esplicativa sul CSV copre lo stesso argomento dalla prospettiva opposta. L' analisi del TSV tratta la variante separata da tabulazioni.

Vantaggi principali

Compressione ad alto rendimento. Memorizzare valori simili l'uno accanto all'altro offre all'encoder molto più materiale su cui lavorare. La documentazione di Apache attribuisce questo risultato a "schemi di compressione e codifica ad alte prestazioni".

Column pruning (potatura delle colonne). Leggere tre colonne su novanta costa all'incirca tre colonne di I/O anziché novanta.

Salto dei gruppi di righe (row group skipping). Poiché i metadati registrano ciò che si trova in ciascun gruppo di righe, un lettore può scartare intere sezioni prima ancora di accedervi.

I tipi di dati si conservano. Le date rimangono date e gli identificatori mantengono i loro zeri iniziali, perché lo schema viaggia all'interno del file.

Scrittura in un unico passaggio. I metadati alla fine consentono di scrivere file di dimensioni molto grandi sotto forma di flusso (stream).

Ampio supporto. La documentazione segnala il supporto in "molti linguaggi di programmazione e strumenti di analisi", quindi raramente rappresenta un vicolo cieco.

Dove Parquet smette di essere utile

Parquet risolve i problemi di archiviazione e recupero. Non risponde a nessuna delle domande relative a ciò che è effettivamente contenuto nel file.

È un formato binario, quindi non è possibile dargli un'occhiata rapida. Aprire un CSV to verificare se la colonna dei ricavi è lorda o netta richiede cinque secondi. Un file binario richiede uno strumento apposito prima di poter visualizzare qualsiasi cosa.

Inoltre, è poco adatto per set di dati di piccole dimensioni. Per una tabella di ricerca di 200 righe, il sovraccarico dei metadati e i requisiti degli strumenti superano qualsiasi vantaggio in termini di compressione. In questo caso, il CSV è il formato migliore, ed essere onesti su questo aspetto fa parte di un buon utilizzo di Parquet.

E non dice nulla sulla qualità. Il file può contenere sciocchezze perfettamente tipizzate e compresse in modo efficiente. Record duplicati, una colonna di valuta che mescola due valute diverse, un ID cliente che ha cambiato schema a marzo. Il formato garantisce la fedeltà, non la correttezza dei dati.

Come lavorare con un file Parquet se non sei un ingegnere

Questo è il divario pratico. La maggior parte degli strumenti aziendali presuppone l'uso di un foglio di calcolo, e un file .parquet non si aprirà come farebbe un CSV.

La via più pragmatica è una fase di conversione. Chiedi a chi ha generato il file un estratto in formato CSV o Excel delle sole colonne di cui hai effettivamente bisogno, oppure convertilo autonomamente con qualsiasi strumento in grado di leggere Parquet. In questo modo perderai i vantaggi della compressione, il che non ha importanza una volta che i dati sono sul tuo computer e ridotti all'essenziale.

Da quel momento in poi, il lavoro consiste in una normale analisi. La pagina dei prezzi di Powerdrill Bloom elenca i caricamenti per Excel, CSV, PDF e documenti, quindi un estratto convertito può essere inserito direttamente. Le domande vengono poste in linguaggio naturale anziché essere scritte sotto forma di query. L' assistente IA per CSV copre questo percorso, mentre i connettori dati gestiscono i casi in cui è preferibile estrarre i dati anziché esportarli.

La distinzione che vale la pena ricordare è che Parquet è una decisione di archiviazione presa a monte rispetto a te. Non è uno strumento di analisi, e convertirlo in un altro formato una volta che il file arriva sulla tua scrivania è una procedura normale, non un ripiego.

Conclusione

Parquet è un sistema di archiviazione orientato alle colonne con lo schema e l'indice posizionati alla fine del file. Questa progettazione garantisce compressione, letture selettive e tipi di dati affidabili, motivo per cui è diventato lo standard predefinito per qualsiasi set di dati di grandi dimensioni.

Ciò che non offre è la visibilità immediata. Nel momento in cui il file arriva a qualcuno che ha bisogno di risposte anziché di archiviazione, il passo successivo più utile è solitamente un estratto mirato e una domanda.

Se ti trovi in questa situazione, prova Powerdrill Bloom con il file convertito e inizia trasformandolo in un grafico.

Domande frequenti

A cosa serve un file Parquet?

Parquet viene utilizzato per archiviare in modo efficiente set di dati tabulari di grandi dimensioni. È comunemente impiegato per le esportazioni da data warehouse, l'archiviazione in data lake, i passaggi di consegne tra team e l'interscambio tra strumenti di analisi. Il motivo è che si comprime molto bene e supporta la lettura delle sole colonne selezionate.

Parquet è migliore del CSV?

Per le tabelle di grandi dimensioni interrogate ripetutamente, sì: è più piccolo, conserva i tipi di dati e supporta il column pruning. Per le tabelle di piccole dimensioni che è necessario ispezionare o condividere ampiamente, il CSV è più semplice perché è in formato testo e si apre ovunque.

Posso aprire un file Parquet in Excel?

Non con un doppio clic, poiché Parquet è un formato binario anziché di testo. L'approccio comune consiste nel convertirlo prima in CSV o Excel, oppure nell'utilizzare uno strumento in grado di leggere direttamente Parquet.

Perché i metadati di Parquet sono memorizzati alla fine del file?

La documentazione di Apache spiega che i metadati vengono scritti dopo i dati "per consentire la scrittura in un unico passaggio". Un processo di scrittura che trasmette un flusso di dati di grandi dimensioni non conosce in anticipo le posizioni finali dei blocchi, quindi scrivere i metadati alla fine evita di dover modificare l'intestazione in un secondo momento.

Cosa sono i gruppi di righe in Parquet?

Un gruppo di righe è una sezione orizzontale della tabella. La specifica descrive le colonne di un file come "suddivise in M gruppi di righe", con ciascuna colonna memorizzata come un blocco separato all'interno di ciascun gruppo. Questo layout consente ai lettori di saltare sia i gruppi che le colonne di cui non hanno bisogno.