CommencezCommencez gratuitement

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

Voir le cours

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 de track_metadata_tbl par year, puis artist_name, puis release, puis title.
    • Rapatriez le résultat avec collect().
    • Reprenez les mêmes étapes, cette fois avec sdf_sort() plutôt que arrange(). N'oubliez pas de mettre les noms de colonnes entre guillemets.

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