Veri Filtreleme
Artık biraz SQL bilgisi edindiğine göre, Spark DataFrame'lerinde buna karşılık gelen işlemlerden bahsetmek daha kolay.
Hadi .filter() metoduna bakalım. Tahmin edeceğin gibi, bu metod SQL'deki WHERE ifadesinin Spark'taki karşılığıdır. .filter() metodu, ya bir SQL ifadesinin WHERE kısmına yazabileceğin bir ifadeyi string olarak, ya da boolean (True/False) değerlerden oluşan bir Spark Column'ını alır.
Örneğin, aşağıdaki iki ifade aynı çıktıyı üretir:
flights.filter("air_time > 120").show()
flights.filter(flights.air_time > 120).show()
Dikkat edersen, ilk durumda .filter() metoduna bir string geçiriyoruz. SQL'de bu filtreleme görevini SELECT * FROM flights WHERE air_time > 120 şeklinde yazardık. Spark'ın .filter() metodu, string olarak geçirildiği sürece bir SQL sorgusunun WHERE kısmına yazılabilecek herhangi bir ifadeyi (bu örnekte "air_time > 120") kabul eder.
Bu durumda, string içinde tablo adını referans göstermiyoruz — tıpkı SQL sorgusunda yapmayacağımız gibi.
İkinci durumda ise .filter() metoduna aslında boolean değerlerden oluşan bir sütun geçiriyoruz. flights.air_time > 120 ifadesinin, flights.air_time içinde 120'den büyük olan kayıtlar için True, diğerleri için False üreten bir boolean sütunu döndürdüğünü unutma.
Unutma, çalışma alanında spark adında bir SparkSession ve flights adlı Spark DataFrame zaten mevcut.
Bu egzersiz
PySpark Temelleri
kursunun bir parçasıdırEgzersiz talimatları
.filter()metodunu kullanarak 1000 milin üzerinde uçan tüm uçuşları iki farklı şekilde bul:- Önce
.filter()metoduna mesafenin 1000'den büyük olup olmadığını kontrol eden bir SQL stringi geçir. Bunulong_flights1olarak kaydet. - Sonra aynı şeyi kontrol eden boolean değerlerden oluşan bir sütunu
.filter()metoduna geçir. Bunu dalong_flights2olarak kaydet.
- Önce
- Her iki DataFrame'in başını yazdırmak için
.show()kullan ve gerçekten eşit olduklarından emin ol!
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# 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
____.____()
____.____()