Sıralama vs. düzenleme
Bu bölümde şimdiye kadar Spark'ın MLlib'inden bazı özellik dönüştürme fonksiyonlarını inceledin. sparklyr, Spark DataFrame API'sinden yararlanan bazı fonksiyonlara da erişim sağlar.
Bir tibble'ı dplyr ile sıralamanın yolu arrange() kullanmaktır. Tibbble'ları Spark'ın DataFrame API'siyle de sdf_sort() kullanarak sıralayabilirsin. Bu fonksiyon, üzerinde sıralama yapılacak sütunların karakter vektörünü alır ve şu anda yalnızca artan düzende sıralamayı destekler.
Örneğin, önce x sütununa göre, sonra (eşitlik durumunda) y sütununa, ardından z sütununa göre sıralamak için aşağıdaki kod dplyr ve Spark DataFrame yaklaşımlarını karşılaştırır.
a_tibble %>%
arrange(x, y, z)
a_tibble %>%
sdf_sort(c("x", "y", "z"))
Hangi yöntemin daha hızlı olduğunu görmek için hem arrange() hem de sdf_sort() kullanmayı dene. Kodunun ne kadar sürede çalıştığını, aynı adlı paketten gelen microbenchmark() içine sararak görebilirsin.
microbenchmark({
# kodun
})
Kodunun hızını profilleme hakkında daha fazla bilgiyi Writing Efficient R Code kursunda öğrenebilirsin.
Bu egzersiz, kursun bir parçasıdır
R ile sparklyr kullanarak Spark’a Giriş
Egzersiz talimatları
spark_conn olarak bir Spark bağlantısı senin için oluşturuldu. Spark'ta depolanan parça (track) metaverisine bağlı bir tibble track_metadata_tbl olarak önceden tanımlandı.
- Aşağıdaki işlemleri gerçekleştirmenin ne kadar sürdüğünü karşılaştırmak için
microbenchmark()kullan.track_metadata_tblsatırlarını önceyear, sonraartist_name, sonrarelease, ardındantitlesütunlarına göre sıralamak içinarrange()kullan.- Sonucu topla.
- Aynı şeyi bu kez
arrange()yerinesdf_sort()kullanarak yap. Sütun adlarını tırnak içine almayı unutma.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# track_metadata_tbl has been pre-defined
track_metadata_tbl
# Compare timings of arrange() and sdf_sort()
microbenchmark(
arranged = track_metadata_tbl %>%
# Arrange by year, then artist_name, then release, then title
___ %>%
# Collect the result
___,
sorted = track_metadata_tbl %>%
# Sort by year, then artist_name, then release, then title
___ %>%
# Collect the result
___,
times = 5
)