Trier avec arrange() vs. sdf_sort()
Jusqu'ici dans ce chapitre, vous avez exploré certaines fonctions de transformation de caractéristiques de MLlib de Spark. sparklyr donne aussi accès à des fonctions qui utilisent l'API DataFrame de Spark.
La façon dplyr de trier un tibble est d'utiliser arrange(). Vous pouvez aussi trier des tibbles avec l'API DataFrame de Spark en utilisant sdf_sort(). Cette fonction reçoit un vecteur de caractères indiquant les colonnes sur lesquelles trier, et pour l'instant seul le tri en ordre croissant est pris en charge.
Par exemple, pour trier d'abord 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 DataFrame de Spark.
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 le temps d'exécution en encapsulant votre code dans microbenchmark(), du paquet du même nom.
microbenchmark({
# your code
})
Vous pouvez en apprendre davantage sur le profilage des performances de votre code dans le cours Writing Efficient R Code.
Cette activité fait partie du cours
Introduction à Spark avec sparklyr en R
Instructions de l’exercice
Une connexion Spark a été créée pour vous sous le nom spark_conn. Un tibble rattaché aux métadonnées des pistes stockées dans Spark a été prédefini sous le nom track_metadata_tbl.
- Utilisez
microbenchmark()pour comparer le temps requis pour effectuer les actions suivantes.- Utilisez
arrange()pour ordonner les lignes detrack_metadata_tblparyear, puisartist_name, puisrelease, puistitle. - Rapatriez le résultat avec
collect(). - Reprenez les mêmes étapes, cette fois avec
sdf_sort()plutôt quearrange(). N'oubliez pas de mettre les noms de colonnes entre guillemets.
- Utilisez
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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
)