Začněte nyníZačněte zdarma

Ř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

Zobrazit kurz

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_tbl podle year, pak artist_name, pak release a nakonec title.
    • Výsledek sesbírej pomocí collect().
    • Celý postup zopakuj, tentokrát místo arrange() použij sdf_sort(). Nezapomeň názvy sloupců uvést v uvozovkách.

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
)
Upravit a spustit kód