ACID-transacties
ACID-transacties zijn de vier garanties (Atomicity, Consistency, Isolation, Durability) die zorgen dat je data correct blijft, ook als een p...
Lees meerApache Spark is een open-source engine voor grootschalige data-analyse op een cluster. Je schrijft SQL of DataFrames in Python, Scala of Java, Spark verdeelt het werk zelf over de beschikbare machines. Batch, streaming, SQL, machine learning en graph-workloads in één engine.
Apache Spark is een open-source engine voor grootschalige data-analyse die zijn werk verdeelt over een cluster van machines. Je schrijft transformaties in SQL, Python, Scala, Java of R, Spark regelt zelf welke node welk deel verwerkt. In één tool doe je batch-verwerking, SQL-analyse, streaming, machine learning en graph-processing.
Het project startte in 2009 bij UC Berkeley's AMPLab, geleid door Matei Zaharia als deel van zijn doctoraat. In 2013 werd het gedoneerd aan de Apache Software Foundation. Top-level Apache-project werd het in februari 2014. Intussen is Spark de standaardmotor voor elk modern data-platform: Databricks, Microsoft Fabric, Amazon EMR, Google Dataproc, en on-prem via Hadoop YARN of Kubernetes.
Spark kwam op om de beperkingen van MapReduce op te lossen. MapReduce schreef elke tussenstap naar schijf, wat iteratief werk (machine learning, grafiekalgoritmes) pijnlijk traag maakte. Spark houdt tussenresultaten in geheugen waar het kan en valt enkel terug op schijf als het moet. Orden van grootte sneller voor dezelfde workload.
Je kan het vergelijken met het verschil tussen één centrale koelkamer en honderd koelkasten in een keuken. Ingrediënten uit één koelkamer halen en terugzetten is trager dan werken vanuit decentrale plekken. Spark volgt die tweede aanpak en coördineert het verkeer.
Spark is een platform met een stapel gespecialiseerde modules op één gedeelde engine.
Spark Core
De basislaag: task-scheduling, fault tolerance, geheugenbeheer. Ook de plek waar Resilient Distributed Datasets (RDD's) leven, de oorspronkelijke lage-niveau-API.
Spark SQL en DataFrames
Veruit de meest gebruikte module. Je schrijft SQL of manipuleert DataFrames: getypeerde, kolomgeoriënteerde tabellen. Spark's Catalyst-optimizer bouwt een queryplan, de Tungsten-engine voert het efficiënt uit op de cluster. Voor de meeste teams is dit vandaag dé manier om met Spark te werken.
Structured Streaming
Real-time verwerking met dezelfde DataFrame-API. Data komt binnen uit Kafka, Event Hubs, Kinesis of bestanden, je schrijft een query alsof het een batch is, en Spark houdt de state bij per micro-batch.
MLlib
De machine-learning-bibliotheek: classificatie, regressie, clustering, feature engineering. Schaalt naar datasets die niet in geheugen van één machine passen. Voor moderne deep learning gebruikt men vaak PyTorch of TensorFlow gecombineerd met Spark voor de data-engineering-stap.
GraphX
Grafiek-processing (PageRank, shortest path, connected components). Minder gebruikt, maar aanwezig voor wie netwerk-achtige data moet analyseren.
Spark kent drie API's die historisch op elkaar gestapeld zijn.
RDD (Resilient Distributed Dataset)
De oorspronkelijke laag, gepubliceerd in Zaharia's artikel uit 2010. Een getypeerde, verdeelde collectie met map/filter/reduce-operaties. Laag niveau, veel controle, weinig optimalisatie.
DataFrame
Toegevoegd in Spark 1.3 (2015). Een verdeelde tabel met een schema. Spark weet welke kolommen er zijn, welke types, en kan het queryplan grondig optimaliseren. De Catalyst-optimizer duwt filters naar beneden, combineert projecties, kiest joinstrategieën. Vandaag gebruik je bijna altijd DataFrame in plaats van RDD.
Dataset
Spark 1.6 (2016). Een DataFrame met compile-time type-checking in Scala en Java. Combineert de veiligheid van RDD met de optimalisaties van DataFrame. In Python speelt dit geen rol; daar is DataFrame de standaard.
Vuistregel: gebruik DataFrames, of Datasets in Scala. RDD alleen als je echt bijzondere lage-niveau-controle nodig hebt, bijvoorbeeld bij custom partitioning.
Spark draait zowat overal waar analytische workloads lopen.
Databricks
De commerciële Spark-distributie van de originele makers. Geoptimaliseerde runtime, Delta Lake-integratie, Unity Catalog, notebooks, jobs. Voor veel organisaties de eenvoudigste weg naar productie-Spark.
Microsoft Fabric Data Engineering
Fabric's Spark-implementatie, geïntegreerd met OneLake. Werkt met dezelfde notebook-ervaring als Synapse Spark, zit onder Fabric-licenties, en leest/schrijft Delta in OneLake zonder extra conversie.
Amazon EMR en Google Dataproc
Managed Spark-clusters in AWS en GCP. Voor teams die al in die clouds zitten en niet per se Databricks willen.
Self-hosted (YARN, Kubernetes)
Open-source Spark draaien op je eigen Hadoop-cluster of op Kubernetes. Voor on-prem of private-cloud setups. Meer DevOps-werk, minder vendor-lock.
Spark is niet altijd het juiste antwoord.
pandas
Single-node, in-memory, Python-native. Voor datasets onder een paar gigabyte op een laptop is pandas sneller op te zetten en sneller in uitvoering dan Spark (geen cluster-startup-kost).
Polars
Rust-gebaseerde single-node engine met lazy evaluation. Voor datasets tot enkele tientallen gigabyte op één machine vaak sneller dan Spark, en zonder clusterbeheer.
DuckDB
Ingebedde analytische database. SQL-first, leest Parquet rechtstreeks. Op een laptop regelmatig sneller dan Spark voor analytische queries op tientallen gigabyte. Minder geschikt voor streaming of ML-workflows.
Apache Flink
Streaming-first framework. Waar Spark Structured Streaming werkt in micro-batches (met latency van seconden), verwerkt Flink event-per-event in échte streaming (sub-seconde latency). Voor low-latency use cases zoals fraud-detection of realtime dashboards vaak de betere keuze.
Vuistregel: start klein. pandas of Polars op een laptop als het kan. DuckDB voor SQL-lastige workloads. Spark pas wanneer je data écht niet meer op één machine past, of wanneer je het hele MLlib/Streaming/GraphX-pakket nodig hebt.
Overkill voor kleine data
Een Spark-job voor honderd megabyte data duurt vaak langer dan een pandas-script voor dezelfde taak, door de cluster-startup en JVM-overhead. Voor sub-gigabyte workloads: pandas of Polars, niet Spark.
Lazy evaluation die verrast
Spark-operaties zijn lazy: een .filter() of .join() doet niets tot je een action triggert (.show(), .count(), .write()). Handig voor optimalisatie, verrassend als je prints verwacht op een lege pipeline.
Dure shuffles
Joins en groupBy's over grote datasets verplaatsen data tussen nodes (shuffle). Dat is het duurste deel van veel jobs. Broadcasten van kleine tabellen, partitioning kiezen die bij je workload past, en skew-aware joins schrijven, maakt het verschil tussen vijf minuten en vijf uur.
Memory-gevoelig
Een Spark-executor die OutOfMemory gooit, crasht niet netjes: hij verliest state en herstart de stage. Monitor geheugen, stem spark.executor.memory af, en overweeg disk spill voor jobs met ongelijkmatige data-distributie.
Versie-compatibiliteit
Spark 3 en Spark 4 hebben breaking changes, en niet alle connectors volgen even snel. Pin je runtime-versie in productie en test upgrades per job.
ACID-transacties zijn de vier garanties (Atomicity, Consistency, Isolation, Durability) die zorgen dat je data correct blijft, ook als een p...
Lees meerApache Hudi is een open tabelformaat dat een data lake op object storage transactioneel maakt. Het blinkt uit in snelle upserts, verwijderin...
Lees meerApache Iceberg is een open tabelformaat voor grote analytische datasets op object storage. Het transformeert een map met Parquet-bestanden i...
Lees meerApache Kafka is een open-source platform dat stromen van events opslaat en doorgeeft: producenten schrijven berichten naar een topic, afneme...
Lees meerEen berekeningsgroep past één DAX-patroon toe op elke meting in je model. Schrijf YTD, MTD en YoY% één keer in plaats van voor elke meting a...
Lees meer
Nieuw in Microsoft Fabric? Zo verschillen een lakehouse en een warehouse, in mensentaal: wat ze doen, wanneer je wat kiest en wanneer je bei...
AI zit standaard in Google Workspace for Education en Microsoft 365 Education. Wat krijg je gratis, wat kost extra, wie mag wat per leeftijd...