Aan de slagGa gratis aan de slag

Gegevens filteren

Nu je wat SQL-kennis op zak hebt, is het makkelijker om te praten over vergelijkbare bewerkingen met Spark DataFrames.

Laten we de .filter()-methode bekijken. Zoals je misschien vermoedt, is dit de Spark-tegenhanger van de WHERE-clausule in SQL. De .filter()-methode neemt ofwel een expressie (als string) die na de WHERE-clausule van een SQL-statement zou komen, of een Spark-kolom met booleaanse (True/False) waarden.

Bijvoorbeeld, de volgende twee expressies leveren dezelfde output op:

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

Let op dat we in het eerste geval een string doorgeven aan .filter(). In SQL zouden we deze filtertaak schrijven als SELECT * FROM flights WHERE air_time > 120. Spark’s .filter() kan elke expressie accepteren die in de WHERE-clausule van een SQL-query kan staan (in dit geval "air_time > 120"), zolang die als string wordt doorgegeven. Merk op dat we in dit geval in de string niet naar de naam van de tabel verwijzen — net zoals we dat in het SQL-statement ook niet zouden doen.

In het tweede geval geven we daadwerkelijk een kolom met booleaanse waarden door aan .filter(). Onthoud dat flights.air_time > 120 een kolom met booleaanse waarden teruggeeft, met True voor die records in flights.air_time die boven 120 liggen, en False voor de rest.

Vergeet niet: er staat al een SparkSession met de naam spark klaar in je werkruimte, samen met de Spark DataFrame flights.

Deze oefening maakt deel uit van de cursus

Basis van PySpark

Cursus bekijken

Oefeninstructies

  • Gebruik de .filter()-methode om alle vluchten te vinden die meer dan 1000 mijl vlogen, op twee manieren:
    • Geef eerst een SQL-string door aan .filter() die controleert of de afstand groter is dan 1000. Sla dit op als long_flights1.
    • Geef daarna een kolom met booleaanse waarden door aan .filter() die hetzelfde controleert. Sla dit op als long_flights2.
  • Gebruik .show() om de koppen van beide DataFrames te printen en controleer of ze echt gelijk zijn!

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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 bewerken en uitvoeren