LoslegenKostenlos starten

Daten filtern

Jetzt, wo du ein bisschen SQL-Know-how hast, ist es einfacher, über die entsprechenden Vorgänge mit Spark DataFrame zu reden.

Werfen wir einen Blick auf die Methode .filter(). Wie du dir vielleicht denken kannst, ist das das Spark-Äquivalent zur SQL-Klausel „ WHERE “. Die Methode „ .filter() “ nimmt entweder einen Ausdruck, der auf die „ WHERE “-Klausel eines SQL-Ausdrucks als Zeichenfolge folgt, oder eine Spark-Spalte mit booleschen Werten (True/False).

Zum Beispiel liefern die folgenden zwei Ausdrücke die gleiche Ausgabe:

flights.filter("air_time > 120").show()
flights.filter(flights.air_time > 120).show()

Beachte, dass wir im ersten Fall einen String an .filter() übergeben. In SQL würden wir diese Filterung so schreiben: ` SELECT * FROM flights WHERE air_time > 120``. Spark's „.filter()” kann jeden Ausdruck akzeptieren, der in die „WHERE”-Klausel einer SQL-Abfrage (in diesem Fall „"air_time > 120"` ”) passt, solange er als Zeichenfolge übergeben wird. Beachte, dass wir in diesem Fall den Namen der Tabelle nicht in der Zeichenfolge angeben – genauso wie wir das in der SQL-Anfrage nicht machen würden.

Im zweiten Fall übergeben wir tatsächlich eine Spalte mit booleschen Werten an .filter(). Erinnere dich daran, dass flights.air_time > 120 eine Spalte mit booleschen Werten zurückgibt, die True anstelle der Datensätze in flights.air_time enthält, die über 120 sind, und ansonsten False.

Erinnere dich daran, dass SparkSession mit dem Namen spark bereits in deinem Arbeitsbereich liegt, zusammen mit dem Spark DataFrame flights.

Diese Übung ist Teil des Kurses

<Kurs>Grundlagen von PySpark</Kurs>
Kurs ansehen

Übungsanweisungen

  • Verwende die Methode .filter(), um alle Flüge zu finden, die mehr als 1000 Meilen in beide Richtungen geflogen sind:

    • Schick erst mal eine SQL-Zeichenkette an .filter(), die guckt, ob die Entfernung größer als 1000 ist. Speichere dies als long_flights1.

    • Dann übergibst du eine Spalte mit booleschen Werten an .filter(), die das Gleiche überprüft. Speichere dies als long_flights2.

  • Verwende .show(), um die Köpfe der beiden DataFrames auszugeben und sicherzustellen, dass sie tatsächlich gleich sind!

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# Filter flights by passing a string
long_flights1 = ____.____("____ > ____")

# Filter flights by passing a column of boolean values
long_flights2 = ____.____(____.____ > ____)

# Print the data to check they're equal
____.____()
____.____()
Code bearbeiten und ausführen