Řazení: sdf_sort vs. arrange
V této kapitole jsi dosud pracoval/a s funkcemi pro transformaci příznaků z Spark MLlib. sparklyr ale také nabízí přístup k funkcím využívajícím Spark DataFrame API.
Standardní způsob řazení tibble v dplyr je funkce arrange(). Tibble lze řadit i pomocí Spark DataFrame API — konkrétně funkcí sdf_sort(). Tato funkce přijímá znakový vektor názvů sloupců, podle kterých chceš řadit, přičemž momentálně podporuje pouze řazení vzestupně.
Například pro seřazení nejprve podle sloupce x, pak (při shodě hodnot) podle y a nakonec podle z porovnej přístupy přes dplyr a Spark DataFrame API:
a_tibble %>%
arrange(x, y, z)
a_tibble %>%
sdf_sort(c("x", "y", "z"))
Chceš-li zjistit, která metoda je rychlejší, vyzkoušej obě — arrange() i sdf_sort(). Dobu běhu kódu změříš tak, že ho obalíš do microbenchmark() ze stejnojmenného balíčku.
microbenchmark({
# tvůj kód
})
Více o profilování rychlosti kódu se dozvíš v kurzu Writing Efficient R Code.
Toto cvičení je součástí kurzu
Úvod do Sparku se sparklyr v R
Pokyny k cvičení
Spark připojení je předpřipraveno jako spark_conn. Tibble napojený na metadata skladeb uložená ve Sparku je předem definován jako track_metadata_tbl.
- Pomocí
microbenchmark()porovnej, jak dlouho trvá provedení následujících operací.- Použij
arrange()k seřazení řádkůtrack_metadata_tblpodleyear, pakartist_name, pakreleasea nakonectitle. - Výsledek sesbírej pomocí
collect(). - Celý postup zopakuj, tentokrát místo
arrange()použijsdf_sort(). Nezapomeň názvy sloupců uvést v uvozovkách.
- Použij
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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
)