Spalten erzeugen
In diesem Kapitel erfährst du, wie du die Methoden der Klasse DataFrame
von Spark nutzen kannst, um gängige Datenoperationen durchzuführen.
Sehen wir uns an, wie man spaltenweise Operationen durchführt. In Spark kannst du dies mit der Methode .withColumn()
tun, die zwei Argumente benötigt. Zuerst einen String mit dem Namen der neuen Spalte und dann die neue Spalte selbst.
Die neue Spalte muss ein Objekt der Klasse Column
sein. Zum Erstellen einer solchen Spalte musst du einfach mit df.colName
eine Spalte aus deinem DataFrame extrahieren.
Die Aktualisierung eines Spark DataFrames unterscheidet sich etwas von der Arbeit in pandas
, da der Spark DataFrame unveränderlich ist. Das bedeutet, dass sie nicht verändert werden kann und daher keine Spalten aktualisiert werden können.
Alle diese Methoden geben also einen neuen DataFrame zurück. Um den ursprünglichen DataFrame zu überschreiben, muss der zurückgegebene DataFrame mit der Methode wie folgt neu zugeordnet werden:
df = df.withColumn("newCol", df.oldCol + 1)
Der obige Code erstellt einen DataFrame mit denselben Spalten wie df
und einer neuen Spalte, newCol
, in der jeder Eintrag gleich dem entsprechenden Eintrag von oldCol
ist, plus eins.
Um eine bestehende Spalte zu überschreiben, muss nur der Name der Spalte als erstes Argument angegeben werden!
Denke daran, dass SparkSession
mit dem Namen spark
bereits in deinem Arbeitsbereich liegt.
Diese Übung ist Teil des Kurses
Einführung in PySpark
Anleitung zur Übung
- Verwende die Methode
spark.table()
mit dem Argument"flights"
, um einen DataFrame zu erstellen, der die Werte der Tabelleflights
im.catalog
enthält. Speichere dies alsflights
. - Zeige den Kopf von
flights
mitflights.show()
an. Überprüfe die Ausgabe: Die Spalteair_time
enthält die Dauer des Fluges in Minuten. - Aktualisiere
flights
und füge eine neue Spalte namensduration_hrs
hinzu, die die Dauer jedes Fluges in Stunden enthält (du musstair_time
durch die Anzahl der Minuten in einer Stunde teilen).
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# Create the DataFrame flights
flights = spark.table(____)
# Show the head
____.____()
# Add duration_hrs
flights = flights.withColumn(____)