ÎncepețiÎncepe gratuit

Filtrarea datelor

Acum că ai dobândit câteva cunoștințe de SQL, este mai ușor să vorbim despre operațiile echivalente folosind Spark DataFrames.

Hai să aruncăm o privire asupra metodei .filter(). Cum probabil bănuiești, aceasta este echivalentul în Spark al clauzei WHERE din SQL. Metoda .filter() acceptă fie o expresie care ar urma clauzei WHERE dintr-o instrucțiune SQL, transmisă ca șir de caractere, fie o coloană Spark cu valori booleene (True/False).

De exemplu, următoarele două expresii produc același rezultat:

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

Observă că în primul caz, transmitem un șir de caractere metodei .filter(). În SQL, această filtrare ar fi scrisă ca SELECT * FROM flights WHERE air_time > 120. Metoda .filter() din Spark acceptă orice expresie care ar putea apărea în clauza WHERE a unei interogări SQL (în acest caz, "air_time > 120"), cu condiția să fie transmisă ca șir de caractere. Observă că în acest caz nu facem referire la numele tabelului în șirul de caractere – la fel cum nu am face-o nici în interogarea SQL.

În al doilea caz, transmitem efectiv o coloană de valori booleene metodei .filter(). Ține minte că flights.air_time > 120 returnează o coloană de valori booleene cu True în locul înregistrărilor din flights.air_time care depășesc 120, și False în rest.

În spațiul de lucru ai deja o sesiune SparkSession numită spark, împreună cu DataFrame-ul Spark flights.

Acest exercițiu face parte din cursul

Fundamente PySpark

Vezi cursul

Instrucțiuni pentru exercițiu

  • Folosește metoda .filter() pentru a găsi toate zborurile care au parcurs peste 1.000 de mile, în două moduri:
    • Mai întâi, transmite un șir de caractere SQL metodei .filter() care verifică dacă distanța este mai mare de 1.000. Salvează rezultatul ca long_flights1.
    • Apoi transmite o coloană de valori booleene metodei .filter() care verifică același lucru. Salvează rezultatul ca long_flights2.
  • Folosește .show() pentru a afișa primele rânduri din ambele DataFrame-uri și verifică că sunt identice!

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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
____.____()
____.____()
Editează și rulează codul