ÎncepețiÎncepe gratuit

Sortare cu sdf_sort vs. arrange

Până acum în acest capitol, ai explorat câteva funcții de transformare a atributelor din MLlib-ul Spark. sparklyr oferă, de asemenea, acces la funcții care utilizează API-ul DataFrame al Spark.

Modalitatea dplyr de a sorta un tibble este să folosești arrange(). Poți sorta tibble-uri și cu ajutorul API-ului DataFrame al Spark, folosind sdf_sort(). Această funcție primește un vector de caractere cu numele coloanelor după care se face sortarea și, în prezent, suportă doar sortarea în ordine crescătoare.

De exemplu, pentru a sorta după coloana x, apoi (în caz de egalitate) după coloana y, iar apoi după coloana z, codul de mai jos compară abordarea dplyr cu cea a DataFrame-ului Spark.

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

Pentru a vedea care metodă este mai rapidă, încearcă să le folosești pe amândouă: arrange() și sdf_sort(). Poți măsura cât timp durează execuția codului tău înfășurând-o în microbenchmark(), din pachetul cu același nume.

microbenchmark({
  # codul tău
})

Poți afla mai multe despre profilarea vitezei codului tău în cursul Writing Efficient R Code.

Acest exercițiu face parte din cursul

Introducere în Spark cu sparklyr în R

Vezi cursul

Instrucțiuni pentru exercițiu

O conexiune Spark a fost creată pentru tine sub numele spark_conn. Un tibble atașat la metadatele pistelor stocate în Spark a fost predefinit ca track_metadata_tbl.

  • Folosește microbenchmark() pentru a compara cât timp durează executarea următoarelor acțiuni.
    • Folosește arrange() pentru a ordona rândurile din track_metadata_tbl după year, apoi artist_name, apoi release, apoi title.
    • Colectează rezultatul.
    • Repetă același lucru, de data aceasta folosind sdf_sort() în loc de arrange(). Nu uita să pui ghilimele la numele coloanelor.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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
)
Editează și rulează codul