CommencerCommencer gratuitement

Trier avec arrange() vs. sdf_sort()

Jusqu’ici dans ce chapitre, vous avez exploré des fonctions de transformation de variables issues de MLlib de Spark. sparklyr donne aussi accès à des fonctions qui s’appuient sur l’API Spark DataFrame.

Avec dplyr, on trie un tibble avec arrange(). Vous pouvez aussi trier des tibbles via l’API Spark DataFrame avec sdf_sort(). Cette fonction prend un vecteur de caractères listant les colonnes sur lesquelles trier, et ne prend actuellement en charge que l’ordre croissant.

Par exemple, pour trier par la colonne x, puis (en cas d’égalité) par y, puis par z, le code suivant compare l’approche dplyr et celle de l’API Spark DataFrame.

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

Pour voir quelle méthode est la plus rapide, essayez à la fois arrange() et sdf_sort(). Vous pouvez mesurer la durée d’exécution en enveloppant votre code dans microbenchmark(), du package du même nom.

microbenchmark({
  # your code
})

Pour en savoir plus sur le profilage des performances de votre code, consultez le cours Writing Efficient R Code.

Cet exercice fait partie du cours

Introduction à Spark avec sparklyr en R

Afficher le cours

Instructions

Une connexion Spark a été créée pour vous sous le nom spark_conn. Un tibble lié aux métadonnées des morceaux stockées dans Spark a été pré‑défini sous le nom track_metadata_tbl.

  • Utilisez microbenchmark() pour comparer le temps nécessaire à l’exécution des actions suivantes.
    • Utilisez arrange() pour ordonner les lignes de track_metadata_tbl par year, puis artist_name, puis release, puis title.
    • Récupérez le résultat en local.
    • Reproduisez la même chose en utilisant cette fois sdf_sort() au lieu de arrange(). N’oubliez pas de mettre les noms de colonnes entre guillemets.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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
)
Modifier et exécuter le code