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
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 calong_flights1. - Apoi transmite o coloană de valori booleene metodei
.filter()care verifică același lucru. Salvează rezultatul calong_flights2.
- Mai întâi, transmite un șir de caractere SQL metodei
- 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
____.____()
____.____()