Kom igångKom igång gratis

Filtrera data

Nu när du har lite SQL-kunskaper i bagaget är det lättare att prata om motsvarande operationer med Spark DataFrames.

Låt oss titta på metoden .filter(). Som du kanske anar är detta Sparks motsvarighet till SQL:s WHERE-sats. Metoden .filter() tar antingen ett uttryck som skulle följa WHERE-satsen i en SQL-fråga – angivet som en sträng – eller en Spark-kolumn med booleska värden (True/False).

De två följande uttrycken ger till exempel samma resultat:

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

Lägg märke till att vi i det första fallet skickar en sträng till .filter(). I SQL skulle vi skriva den här filtreringen som SELECT * FROM flights WHERE air_time > 120. Sparks .filter() accepterar vilket uttryck som helst som skulle kunna stå i WHERE-satsen i en SQL-fråga (i det här fallet "air_time > 120"), så länge det skickas som en sträng. Observera att vi i det här fallet inte refererar till tabellnamnet i strängen – precis som vi inte skulle göra i SQL-frågan.

I det andra fallet skickar vi i stället en kolumn med booleska värden till .filter(). Kom ihåg att flights.air_time > 120 returnerar en kolumn med booleska värden där posterna i flights.air_time som är över 120 får värdet True, och övriga får False.

Kom ihåg att en SparkSession med namnet spark redan finns i din arbetsyta, tillsammans med Spark DataFrame:n flights.

Den här övningen är en del av kursen

Grunderna i PySpark

Visa kurs

Övningsinstruktioner

  • Använd metoden .filter() för att hitta alla flygningar som flög över 1 000 miles på två sätt:
    • Skicka först en SQL-sträng till .filter() som kontrollerar om distansen är större än 1 000. Spara resultatet som long_flights1.
    • Skicka sedan en kolumn med booleska värden till .filter() som kontrollerar samma sak. Spara resultatet som long_flights2.
  • Använd .show() för att skriva ut de första raderna i båda DataFrames och kontrollera att de verkligen är lika!

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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
____.____()
____.____()
Redigera och kör kod