LoslegenKostenlos loslegen

Daten filtern

Jetzt, wo du ein bisschen SQL-Know-how hast, ist es einfacher, über die analogen Operationen mit Spark DataFrames zu sprechen.

Werfen wir einen Blick auf die Methode .filter(). Wie du vielleicht schon vermutet hast, ist dies das Spark-Gegenstück zu SQLs WHERE-Klausel. Die Methode .filter() nimmt entweder einen Ausdruck, der der WHERE-Klausel eines SQL-Ausdrucks als String folgen würde, oder eine Spark-Spalte mit booleschen (True/False) Werten entgegen.

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 Filteraufgabe als SELECT * FROM flights WHERE air_time > 120 schreiben. Sparks .filter() kann jeden Ausdruck akzeptieren, der in die WHERE-Klausel einer SQL-Abfrage (in diesem Fall "air_time > 120") passen könnte, solange er als String übergeben wird. Beachte, dass wir in diesem Fall nicht den Namen der Tabelle im String referenzieren – wie wir dies auch in der SQL-Anfrage nicht tun 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

Einführung in PySpark

Kurs anzeigen

Anleitung zur Übung

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

    • Zuerst übergibst du einen SQL-String an .filter(), der prüft, 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 Ü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