Einführung in Spark DataFrames
Swipe um das Menü anzuzeigen
Ein Spark DataFrame ist eine verteilte Sammlung von Daten, die in benannten Spalten organisiert ist. Konzeptionell entspricht es einer Tabelle in einer relationalen Datenbank oder einer Tabellenkalkulation mit Spaltenüberschriften, wurde jedoch dafür entwickelt, über einen Cluster von Computern hinweg verarbeitet zu werden.
Mit dem Einstieg in Abschnitt 4 verlagert sich der Fokus von der Benutzeroberfläche auf die eigentlichen Daten. Für eine effektive Arbeit in Databricks ist das Verständnis des DataFrame unerlässlich. Dies ist die grundlegende Struktur, die von Apache Spark zur Speicherung und Bearbeitung von Daten verwendet wird. Unabhängig davon, ob Python, SQL oder Scala verwendet wird, erfolgt nahezu jede Interaktion mit Daten über ein DataFrame.
Es gibt auch eine PySpark-Schnittstelle, die später verwendet wird.
Apache Spark ist eine leistungsstarke Engine zur parallelen Verarbeitung großer Datenmengen über viele Computer hinweg. Sie ist in Scala geschrieben und übernimmt im Hintergrund die eigentliche Verarbeitung in Databricks.
PySpark ist lediglich die Python-Schnittstelle zu Spark. Sie ermöglicht das Schreiben von Python-Code, der im Hintergrund Spark-Anweisungen ausführt.
Wenn also in einem Databricks-Notebook beispielsweise df.filter() oder df.groupBy() geschrieben wird, handelt es sich um PySpark – aber Spark übernimmt die Verarbeitung von Millionen von Zeilen im Cluster.
Die Tabellenkalkulations-Analogie
Die einfachste Möglichkeit, sich ein DataFrame vorzustellen, ist ein einzelnes Blatt in einer Excel-Arbeitsmappe. Es enthält Datenzeilen und Spalten mit bestimmten Namen wie "Date", "Product_ID" oder "Price". Im Gegensatz zu einem Excel-Blatt, das auf dem eigenen Laptop gespeichert ist, ist ein Spark DataFrame jedoch verteilt. Das bedeutet: Wenn Ihr Datensatz zu groß für einen einzelnen Computer ist, teilt Spark das "Tabellenblatt" in kleinere Abschnitte auf und verteilt sie auf die verschiedenen Knoten Ihres Clusters.
Warum DataFrames statt Rohdateien verwenden?
Wenn Sie eine rohe CSV- oder JSON-Datei in ein DataFrame einlesen, führt Databricks zwei wichtige Schritte aus:
- Schema-Erkennung: Die Daten werden analysiert, um zu erkennen, dass "Price" eine Zahl und "Name" ein Text ist;
- Optimierung: Sobald sich die Daten in einem DataFrame befinden, kann Spark seinen "Optimizer" verwenden, um den schnellsten Weg zum Filtern oder Aggregieren der Daten zu finden. Er funktioniert wie ein Navigationssystem und sucht die effizienteste Route zum Ergebnis, damit keine Rechenleistung verschwendet wird.
Wichtige Eigenschaften
Es gibt drei Hauptmerkmale von DataFrames, die Sie sich merken sollten:
- Unveränderlich: Sobald ein DataFrame erstellt wurde, kann es nicht mehr geändert werden. Wenn Sie die Daten "bereinigen" oder eine Spalte "entfernen", erstellt Spark tatsächlich ein neues DataFrame mit den vorgenommenen Änderungen. Dies gewährleistet die Datenintegrität;
- Lazy Evaluation (verzögerte Auswertung): Spark führt keine Operationen aus, bis ein Ergebnis angefordert wird (wie z. B. eine Zählung oder Anzeige). Zunächst wird ein "Plan" erstellt, der nur bei Bedarf ausgeführt wird;
- Vereinheitlichte API: Ein DataFrame kann mit Python erstellt und anschließend mit SQL abgefragt werden. Die zugrunde liegende Struktur bleibt gleich, was das "Mischen von Sprachen" ermöglicht, wie in Abschnitt 3 geübt.
DataFrames vs. Tabellen
In Databricks werden die Begriffe "Tabelle" und "DataFrame" oft synonym verwendet, es gibt jedoch einen kleinen Unterschied. Eine Tabelle ist ein permanentes Objekt, das im Katalog gespeichert wird. Ein DataFrame ist ein temporäres Objekt, das im Speicher des Clusters existiert, solange das Notebook ausgeführt wird.
Typischerweise sieht der Arbeitsablauf so aus:
- Laden von Daten aus dem Katalog in ein DataFrame;
- Bearbeiten des DataFrame mittels Code;
- Speichern des Endergebnisses zurück in den Katalog als Tabelle.
1. Wie verarbeitet ein Spark DataFrame einen Datensatz, der zu groß für einen einzelnen Computer ist?
2. Was passiert, wenn Sie ein DataFrame in Spark "modifizieren", zum Beispiel eine Spalte entfernen?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen