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
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 dintrack_metadata_tbldupăyear, apoiartist_name, apoirelease, apoititle. - Colectează rezultatul.
- Repetă același lucru, de data aceasta folosind
sdf_sort()în loc dearrange(). Nu uita să pui ghilimele la numele coloanelor.
- Folosește
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
)