1. Apprendre
  2. /
  3. Cours
  4. /
  5. Introduction à Spark avec sparklyr en R

Connected

Exercice

Les groupes : excellents pour la musique, excellents pour les données

Un problème d'analyse courant consiste à calculer des statistiques sommaires pour chaque groupe de données. Par exemple, vous pourriez vouloir connaître vos revenus de vente par mois ou par région. En R, le processus qui consiste à diviser vos données en groupes, à appliquer une statistique sommaire à chaque groupe, puis à combiner les résultats en une seule structure de données est appelé « split-apply-combine ». Le concept est toutefois beaucoup plus ancien : SQL dispose de l'instruction GROUP BY depuis des décennies. Le terme « map-reduce » renvoie à une idée similaire, où « map » correspond très grossièrement aux étapes « split » et « apply », et « reduce » correspond à « combine ». L'approche dplyr/sparklyr consiste à utiliser group_by() avant mutate() ou summarize(). Elle prend les noms non cités des colonnes selon lesquelles regrouper. Par exemple, pour calculer la moyenne de la colonne x pour chaque combinaison de valeurs dans les colonnes grp1 et grp2, vous écririez ce qui suit.

a_tibble %>%
  group_by(grp1, grp2) %>%
  summarize(mean_x = mean(x))

Notez que les colonnes passées à group_by() devraient généralement être des variables catégorielles. Par exemple, si vous vouliez calculer le poids moyen des personnes en fonction de leur taille, il n'est pas logique de regrouper par taille, puisque chacun a une taille unique. Vous pourriez toutefois utiliser cut() pour convertir les tailles en différentes catégories et calculer le poids moyen pour chaque catégorie.

Instructions

100 XP

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

  • Regroupez le contenu de track_metadata par artist_name, puis :
    • Résumez la moyenne par groupe de duration dans une nouvelle colonne mean_duration.
    • Attribuez les résultats à duration_by_artist.
  • Trouvez les artistes ayant les chansons les plus courtes en ordonnant les lignes par ordre croissant de mean_duration.
  • De même, trouvez ceux ayant les chansons les plus longues en ordonnant par ordre décroissant de mean_duration.