Inizia subitoInizia gratis

Sorting vs. arranging

Finora in questo capitolo hai esplorato alcune funzioni di trasformazione delle feature di MLlib di Spark. sparklyr dà anche accesso ad alcune funzioni che utilizzano la Spark DataFrame API.

Il modo dplyr per ordinare una tibble è usare arrange(). Puoi anche ordinare le tibble usando la Spark DataFrame API con sdf_sort(). Questa funzione accetta un vettore di caratteri con le colonne su cui ordinare e, al momento, supporta solo l’ordinamento in ordine crescente.

Per esempio, per ordinare prima per la colonna x, poi (in caso di pari merito) per la colonna y, quindi per la colonna z, il codice seguente confronta l’approccio dplyr con quello della Spark DataFrame API.

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

Per capire quale metodo sia più veloce, prova sia arrange() sia sdf_sort(). Puoi misurare il tempo di esecuzione racchiudendo il codice in microbenchmark(), dell’omonimo pacchetto.

microbenchmark({
  # your code
})

Puoi approfondire il profiling delle prestazioni del tuo codice nel corso Writing Efficient R Code.

Questo esercizio fa parte del corso

Introduzione a Spark con sparklyr in R

Visualizza corso

Istruzioni dell'esercizio

È già stata creata per te una connessione Spark come spark_conn. Una tibble collegata ai metadati dei brani archiviati in Spark è stata predefinita come track_metadata_tbl.

  • Usa microbenchmark() per confrontare quanto tempo impiega l’esecuzione delle seguenti azioni.
    • Usa arrange() per ordinare le righe di track_metadata_tbl per year, poi artist_name, poi release, poi title.
    • Raccogli il risultato.
    • Ripeti la stessa cosa usando questa volta sdf_sort() invece di arrange(). Ricordati di mettere tra virgolette i nomi delle colonne.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# 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
)
Modifica ed esegui il codice