Introductie tot Spark DataFrames
Veeg om het menu te tonen
Een Spark DataFrame is een gedistribueerde verzameling gegevens die is georganiseerd in benoemde kolommen. Conceptueel is het gelijk aan een tabel in een relationele database of een spreadsheet met kolomkoppen, maar het is ontworpen om verwerkt te worden over een cluster van computers.
In sectie 4 verschuift de focus van de interface naar de gegevens zelf. Om effectief te werken in Databricks, is inzicht in de DataFrame essentieel. Dit is de fundamentele structuur die door Apache Spark wordt gebruikt om gegevens op te slaan en te bewerken. Of je nu Python, SQL of Scala gebruikt, vrijwel alles wat je doet zal betrekking hebben op het werken met een DataFrame.
Er is ook een Py Spark-interface die later gebruikt zal worden.
Apache Spark is een krachtige engine voor het verwerken van enorme hoeveelheden gegevens parallel over meerdere computers tegelijk. Het is geschreven in Scala en verzorgt het zware werk achter de schermen in Databricks.
PySpark is simpelweg de Python-interface voor Spark. Hiermee kun je gewone Python-code schrijven die stiekem aan Spark doorgeeft wat er moet gebeuren.
Dus wanneer je een df.filter() of df.groupBy() schrijft in een Databricks-notebook, schrijf je PySpark — maar Spark verwerkt daadwerkelijk miljoenen rijen over je cluster.
De Spreadsheet-analogie
De eenvoudigste manier om een DataFrame te visualiseren is door te denken aan een enkel werkblad in een Excel-werkmap. Het bevat rijen met gegevens en kolommen met specifieke namen zoals "Date", "Product_ID" of "Price". In tegenstelling tot een Excel-blad dat op je laptop staat, is een Spark DataFrame echter gedistribueerd. Dit betekent dat als je dataset te groot is voor één computer, Spark het "spreadsheet" opdeelt in kleinere stukken en deze verspreidt over de verschillende knooppunten in je cluster.
Waarom DataFrames gebruiken in plaats van ruwe bestanden?
Wanneer je een ruwe CSV- of JSON-bestand in een DataFrame inleest, doet Databricks twee belangrijke dingen:
- Schema-inferentie: het analyseert de gegevens om te begrijpen dat "Price" een getal is en "Name" tekst is;
- Optimalisatie: zodra de gegevens in een DataFrame staan, kan Spark zijn "optimizer" gebruiken om de snelste manier te vinden om die gegevens te filteren of te aggregeren. Het werkt als een GPS en zoekt de meest efficiënte route naar je resultaat, zodat je geen rekenkracht verspilt.
Belangrijkste kenmerken
Er zijn drie hoofdkenmerken van DataFrames die je moet onthouden:
- Onveranderlijk: zodra een DataFrame is aangemaakt, kan deze niet meer worden gewijzigd. Als je de data "opschoont" of een kolom "verwijdert", maakt Spark eigenlijk een nieuw DataFrame met die wijzigingen toegepast. Dit waarborgt de gegevensintegriteit;
- Lui evalueren: Spark voert pas daadwerkelijk werk uit wanneer je om een resultaat vraagt (zoals een telling of een weergave). Het bouwt eerst een "plan" en voert dit alleen uit wanneer het echt nodig is;
- Uniforme API: je kunt een DataFrame aanmaken met Python en deze vervolgens bevragen met SQL. De onderliggende structuur blijft hetzelfde, waardoor het "mixen van talen" mogelijk is, zoals we in Sectie 3 hebben geoefend.
DataFrames versus Tabellen
In Databricks worden de termen "Tabel" en "DataFrame" vaak door elkaar gebruikt, maar er is een klein verschil. Een Tabel is een permanent object dat is opgeslagen in je Catalogus. Een DataFrame is een tijdelijk object dat in het geheugen van het cluster bestaat zolang je notebook actief is.
Meestal ziet je workflow er als volgt uit:
- Data laden uit de Catalogus in een DataFrame;
- Het DataFrame manipuleren met code;
- Het eindresultaat terug opslaan in de Catalogus als een Tabel.
1. Hoe gaat een Spark DataFrame om met een dataset die te groot is voor één enkele computer?
2. Wat gebeurt er wanneer je een DataFrame in Spark "wijzigt", bijvoorbeeld door een kolom te verwijderen?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.