Polars; a New Kid on the Block
“If all you have is a hammer, everything looks like a nail”. Binnen het huidige Data Engineering landschap is deze uitdrukking erg toepasselijk. Bij het ontwikkelen van een modern dataplatform, bijvoorbeeld een delta lakehouse, is Apache Spark op dit moment dé standaardoplossing voor het verwerken van grote hoeveelheden data. Het gerelateerde PySpark is vaak de voorkeursbibliotheek voor het opzetten van moderne dataplatformen, vooral binnen omgevingen zoals Databricks en Microsoft Fabric. Lange tijd waren er weinig alternatieven, maar de komst van Polars verandert dit. Wat is Polars precies, en kan het een alternatief zijn voor jouw dataplatform?
Spark v.s. Polars
Om de verschillen tussen Spark en Polars te begrijpen, is het belangrijk te weten hoe beide frameworks in de kern werken. Spark is gebouwd op een gedistribueerde infrastructuur, waardoor het grote hoeveelheden data kan verwerken, zelfs als deze niet in het geheugen van één machine passen. Dit maakt het mogelijk om miljarden records te verwerken, maar brengt potentieel ook overhead met zich mee, zoals hogere kosten en langere verwerkingstijden.
Polars is een data processing bibliotheek geschreven in Rust, een moderne programmeertaal die bekend staat om zijn snelheid en efficiënt geheugenbeheer. De Python API van Polars maakt het mogelijk om met Python te blijven werken tijdens de ontwikkeling van een dataplatform. Polars heeft een syntax die lijkt op die van PySpark, wat het relatief makkelijk maakt om aan te leren. Een belangrijk nadeel ten opzichte van Spark is dat Polars geen gedistribueerd framework is, waardoor de data altijd binnen het geheugen van één machine moet passen.
Spark
Polars
Prestaties
Waarom zou je Polars gebruiken als Spark alles kan wat Polars ook kan, en meer? De eerste reden om Polars te overwegen, is snelheid. Afhankelijk van de hoeveelheid te verwerken data kan Polars aanzienlijk sneller zijn dan Spark. Zoals je kan zien in onderstaande tabel, is zelfs bij het verwerken van 25 miljoen records Polars nog steeds ruim 3,5 keer sneller dan Spark. Voor een juiste vergelijking is hierbij gebruik gemaakt van een single-node Spark cluster. Deze uitkomst illustreert hoe krachtig Polars is, zelfs voor grote datasets, mits deze binnen het beschikbare geheugen passen. Polars maakt daarnaast nog een verschil tussen 'Lazy’ en ‘Eager’ evaluatie, waarbij bij 'Lazy’ evaluatie het mogelijk maakt om extra optimalisaties toe te passen en dataverwerking potentieel nóg sneller maakt.
De tweede reden is kostenbesparing. Gedistribueerde frameworks zoals Spark kunnen erg duur zijn. Door Polars te gebruiken, kun je mogelijk besparen op infrastructuurkosten omdat je geen groot Spark cluster nodig hebt. Dit maakt Polars een aantrekkelijke optie voor organisaties die kosten willen drukken zonder in te leveren op verwerkingssnelheid.
Is Polars iets voor jou?
Om deze vraag te beantwoorden, moet je eerst in kaart brengen wat de hoeveelheden data zijn die je met je organisatie wil verwerken. Gaat het om miljarden rijen? Dan kan je er waarschijnlijk niet omheen om Spark te gaan of blijven gebruiken. Heb je te maken met enkele tientallen miljoenen rijen? Dan zou Polars een uitstekend alternatief kunnen zijn voor jouw oplossing.
Bij veel van onze klanten, voornamelijk in het MKB, zien we dat datasets vaak bestaan uit enkele miljoenen rijen. Voor deze klanten experimenteren we met Polars vanwege de snelheid en efficiëntie. De bibliotheek wordt steeds volwassener en biedt nu al belangrijke functionaliteiten zoals Delta-integratie. Ook binnen Microsoft Fabric zien we dat processen in de toekomst mogelijk kunnen worden uitgevoerd op single-node clusters zonder gebruik te maken van een Spark-backend. Dit maakt het gebruik van alternatieve bibliotheken vele malen makkelijker.
Conclusie
“Use the right tool for the job!” Bij Creates blijven we kritisch kijken naar de oplossingen die we bouwen. Als er beter passende alternatieven zijn, zoals Polars, is het de moeite waard om deze te onderzoeken. De ontwikkelingen binnen het data engineering landschap zijn veelbelovend, en het is spannend om te zien welke innovaties de toekomst zal brengen. Polars biedt nu al een snel en kostenbesparend alternatief voor bepaalde dataverwerkingsbehoeften, en het lijkt erop dat het alleen maar beter zal worden!