1. Učit se
  2. /
  3. Kurzy
  4. /
  5. Foundations of PySpark

Connected

Cvičení

Filtrování dat

Teď, když už máš trochu SQL znalostí za sebou, je snazší probrat analogické operace s použitím Spark DataFrames.

Podívejme se na metodu .filter(). Jak možná tušíš, je to Spark ekvivalent SQL klauzule WHERE. Metoda .filter() přijímá buď výraz, který by následoval za klauzulí WHERE v SQL dotazu (jako řetězec), nebo Spark sloupec hodnot boolean (True/False).

Například tyto dva výrazy vrátí stejný výsledek:

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

Všimni si, že v prvním případě předáváme metodě .filter() řetězec. V SQL bychom tento filtr zapsali jako SELECT * FROM flights WHERE air_time > 120. Metoda .filter() ve Sparku přijme jakýkoli výraz, který by mohl stát v klauzuli WHERE SQL dotazu (v tomto případě "air_time > 120"), pokud je předán jako řetězec. Všimni si také, že v tomto případě název tabulky v řetězci neuvádíme – stejně jako bychom ho neuváděli v SQL dotazu.

Ve druhém případě předáváme metodě .filter() přímo sloupec hodnot boolean. Pamatuj, že flights.air_time > 120 vrátí sloupec hodnot boolean, kde záznamy v flights.air_time s hodnotou vyšší než 120 mají True a ostatní False.

V pracovním prostředí máš k dispozici SparkSession pojmenovanou spark a také Spark DataFrame flights.

Pokyny

100 XP
  • Pomocí metody .filter() najdi všechny lety, které uletěly více než 1000 mil – dvěma způsoby:
    • Nejprve předej metodě .filter() SQL řetězec, který ověří, zda je vzdálenost větší než 1000. Výsledek ulož jako long_flights1.
    • Poté předej metodě .filter() sloupec hodnot boolean, který ověří totéž. Výsledek ulož jako long_flights2.
  • Pomocí .show() vypiš první řádky obou DataFrames a ověř, že jsou skutečně shodné!