Zacznij terazZacznij za darmo

Sortowanie: `sdf_sort()` kontra `arrange()`

W tym rozdziale poznałeś już kilka funkcji transformacji cech z biblioteki MLlib Sparka. sparklyr daje też dostęp do funkcji korzystających bezpośrednio z API DataFrame Sparka.

W dplyr sortowanie tibble odbywa się za pomocą arrange(). Możesz też sortować tibble przez API DataFrame Sparka, używając sdf_sort(). Funkcja ta przyjmuje wektor nazw kolumn (jako ciągi znaków) i aktualnie obsługuje wyłącznie sortowanie rosnące.

Na przykład, aby posortować według kolumny x, a w przypadku remisów – według y, a następnie z, poniższy kod porównuje podejście dplyr z podejściem Spark DataFrame.

a_tibble %>%
  arrange(x, y, z)
a_tibble %>%
  sdf_sort(c("x", "y", "z"))

Aby sprawdzić, która metoda jest szybsza, wypróbuj obie: arrange() i sdf_sort(). Czas wykonania kodu możesz zmierzyć, owijając go w microbenchmark() z pakietu o tej samej nazwie.

microbenchmark({
  # twój kod
})

Więcej o profilowaniu wydajności kodu dowiesz się z kursu Writing Efficient R Code.

To ćwiczenie jest częścią kursu

Wprowadzenie do Spark z pakietem sparklyr w R

Zobacz kurs

Instrukcje do ćwiczenia

Połączenie ze Sparkiem zostało już dla ciebie utworzone jako spark_conn. Tibble powiązany z metadanymi utworów przechowywanymi w Sparku jest wstępnie zdefiniowany jako track_metadata_tbl.

  • Użyj microbenchmark(), aby porównać czas wykonania poniższych operacji.
    • Użyj arrange(), aby posortować wiersze track_metadata_tbl według year, potem artist_name, następnie release, a na końcu title.
    • Zbierz wynik za pomocą collect().
    • Wykonaj to samo, ale tym razem użyj sdf_sort() zamiast arrange(). Pamiętaj, aby nazwy kolumn podać w cudzysłowie.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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
)
Edytuj i uruchom kod