LoslegenKostenlos loslegen

Sortieren vs. Anordnen

Bisher in diesem Kapitel hast du einige Feature-Transformationen aus Sparks MLlib kennengelernt. sparklyr bietet außerdem Zugriff auf Funktionen, die die Spark-DataFrame-API nutzen.

Die dplyr-Methode zum Sortieren eines Tibbles ist arrange(). Du kannst Tibbles auch mit Sparks DataFrame-API über sdf_sort() sortieren. Diese Funktion nimmt einen Character-Vektor der zu sortierenden Spalten entgegen, und aktuell wird nur aufsteigende Sortierung unterstützt.

Um zum Beispiel nach der Spalte x und bei Gleichständen nach y und danach z zu sortieren, vergleicht der folgende Code die dplyr- und die Spark-DataFrame-Variante.

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

Um zu sehen, welche Methode schneller ist, probiere sowohl arrange() als auch sdf_sort() aus. Du kannst messen, wie lange dein Code läuft, indem du ihn in microbenchmark() aus dem gleichnamigen Paket einbettest.

microbenchmark({
  # your code
})

Mehr über das Profiling der Ausführungsgeschwindigkeit erfährst du im Kurs Writing Efficient R Code.

Diese Übung ist Teil des Kurses

Einführung in Spark mit sparklyr in R

Kurs anzeigen

Anleitung zur Übung

Für dich wurde eine Spark-Verbindung als spark_conn erstellt. Ein an die in Spark gespeicherten Track-Metadaten angebundenes Tibble wurde als track_metadata_tbl vordefiniert.

  • Verwende microbenchmark(), um zu vergleichen, wie lange die folgenden Aktionen dauern.
    • Verwende arrange(), um die Zeilen von track_metadata_tbl nach year, dann artist_name, dann release, dann title zu sortieren.
    • Sammle das Ergebnis mit collect() ein.
    • Mach dasselbe noch einmal, diesmal mit sdf_sort() statt arrange(). Denk daran, die Spaltennamen zu quoten.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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
)
Code bearbeiten und ausführen