Parquet format blog

Efficiënte data opslag? Gebruik Parquet!

Erfan Nariman
04-08-2022

Tl;DR:️

Parquet is ~10x kleiner qua opslaggrootte en ~18x sneller qua export ten opzichte van CSV!

Lees hieronder de details en wat de reden hiervan is! 👇

Parquet bestandsformaat

In analytics en reporting omgevingen worden bestanden steeds vaker als ruwe data opgeslagen in bijvoorbeeld Excel of CSV format, ten opzichte van een traditionele database. In moderne termen wordt dit ook wel een Datalake genoemd.

Voordeel hiervan is dat er efficiënter rapportages of analyses ontwikkeld kunnen worden, zonder veel tijd kwijt te zijn aan het opzetten van een data infrastructuur. Daarbij helpt ook de ontwikkeling van reporting en analyse tools zoals Power BI, Tableau, Python of R, die steeds simpeler verschillende bestandsformaten kunnen importeren.

Het "standaard" bestandsformaat: Excel of CSV

In veel gevallen wordt bij het exporteren naar een bestandsformaat gebruik gemaakt van CSV of Excel. Dit omdat het bekendere bestandsformaten zijn, waar minder technische personen uit de business ook mee werken.

Vaak is het doel om bestanden op te slaan voor reporting en BI doeleinden of als tussenstap voor verdere analyses.

Het Parquet bestandsformaat!

Het Parquet bestandsformaat is superieur wanneer het gaat om data opslag! Maar wat is het?

" Apache Parquet is an open source, column-oriented data file format designed for efficient data storage and retrieval. It provides efficient data compression and encoding schemes with enhanced performance to handle complex data in bulk. "

Samengevat is het een bestandsformaat die kolom georiënteerd is qua opslag in plaats van regel georiënteerd, met een efficiënte data compressie algoritme. Dit zorgt er ervoor dat het weinig opslagruimte in beslag neemt en efficiënt is met importeren en exporteren.

Hoe efficiënt is het?

Om de efficiëntie te testen, vergelijken we het met CSV op een aantal metrieken:

  • Opslaggrootte op de schijf
  • Export tijd
  • Import tijd

Allereerst maken we een pandas DataFrame van 10 miljoen regels:

Nu we een dataframe hebben, kunnen we de metrieken berekenen:

De metrieken op een rijtje:

Type data Opslaggrootte Export tijd Import tijd
CSV 637 mb 32.2 s 9.61 s
Parquet 70 mb 1.94 s 779 ms
Besparing 89% 94% 92%

Besparing in geld uitgedrukt 💰

Tegenwoordig zijn pricing modellen van analytics diensten uitgedrukt in een combinatie van gebruik van schijfruimte en hoeveelheid computation kracht. In dit voorbeeld nemen we Azure Synapse Analytics als voorbeeld, een analytics service waar je onder andere "serverless" data kan queryen, bijvoorbeeld CSV's, Excel en Parquet. De prijs is € 4,941 per tb, zie link.

Als we de cijfers nemen van onze test, dan bespaart Parquet 90% wat neerkomt op € 4,50 per tb! 🤯

En een korte blik op andere artikelen zoals deze van Databricks, kunnen de besparingen nog hoger zijn doordat Parquet per kolom gelezen kan worden! Databricks screenshot

Meer voordelen

Er zijn meer voordelen dan alleen de efficiëntie en de kostenbesparing:

Breed support in Analytics/BI tools en programmeertalen
De voordelen van Parquet hebben er inmiddels voor gezorgd dat het breed ondersteund wordt door verschillende tools zoals:

En nog meer..

Dit zorgt ervoor dat organisaties eerder durven te investeren in Parquet en gerust kunnen zijn dat het geen tijdelijke (hype) oplossing is.

Metadata
Naast de data zelf wordt er bij Parquet ook metadata opgeslagen. Zoals het schema, kolomstatistieken en kolomtypes. Dit zorgt ervoor dat bij uitwisseling van het bestand het schema en types altijd bewaard blijven, wat zorgt voor meer consistentie qua data opslag.
Subset van kolommen importeren
Doordat Parquet kolom georiënteerd is, hoeft niet het hele bestand ingeladen te worden, wanneer maar een subset nodig is. Stel dat er voor een analyse 6 kolommen nodig zijn uit een bestand waar 138 kolommen inzitten, dan moet bij een CSV bestand het hele bestand worden geïmporteerd voordat de 6 kolommen geselecteerd kunnen worden. Dit is bij Parquet niet het geval:

Tot slot

Hopelijk is het gelukt om je enthousiast en bekend te maken met Parquet!

Het is een bestandsformaat die er is om te blijven en wordt met de tijd breder ondersteund door de hoge efficiënte en simpele ingebruikname. Veel tools ondersteunen het al en het kan geld besparen bij data opslag en data verwerking!

Benieuwd naar hoe wij Parquet gebruiken om moderne, schaalbare data pipelines te ontwikkelen en analytics omgevingen op te zetten? Stuur mij een bericht en laten we een (virtuele) kop koffie drinken!

Vond je dit artikel interessant?

divider graphic