Stocker des résultats intermédiaires
Comme vous l’avez vu au chapitre 1, copier des données entre R et Spark est fondamentalement lent. Cela signifie que la collecte des données, comme dans l’exercice précédent, ne doit être effectuée que lorsque c’est vraiment nécessaire.
L’opérateur pipe est très pratique pour enchaîner des commandes de manipulation de données, mais en général, vous ne pouvez pas réaliser toute une analyse avec tout enchaîné. Par exemple, c’est une très mauvaise pratique, car vous ne pourrez jamais déboguer votre code.
final_results <- starting_data %>%
# 743 étapes enchaînées
# ... %>%
collect()
Cela pose un dilemme. Vous devez conserver les résultats de calculs intermédiaires, mais vous ne voulez pas les collecter car c’est lent. La solution consiste à utiliser compute() pour exécuter le calcul, tout en stockant les résultats dans une data frame temporaire sur Spark. compute prend deux arguments : un tibble et un nom de variable pour la data frame Spark qui stockera les résultats.
a_tibble %>%
# quelques calculs %>%
compute("intermediate_results")
Cet exercice fait partie du cours
Introduction à Spark avec sparklyr en R
Instructions
Une connexion Spark a été créée pour vous sous le nom spark_conn. Un tibble relié aux métadonnées des pistes stockées dans Spark a été pré‑défini sous le nom track_metadata_tbl.
- Filtrez les lignes de
track_metadata_tbloùartist_familiarityest supérieure à 0,8. - Calculez les résultats avec
compute().- Stockez les résultats dans une data frame Spark appelée
"familiar_artists". - Affectez le résultat à un tibble R nommé
computed.
- Stockez les résultats dans une data frame Spark appelée
- Affichez les jeux de données Spark disponibles avec
src_tbls(). - Affichez la
class()decomputed. Remarquez qu’à la différence decollect(),compute()renvoie un tibble distant. Les données sont toujours stockées dans le cluster Spark.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# track_metadata_tbl has been pre-defined
track_metadata_tbl
computed <- track_metadata_tbl %>%
# Filter where artist familiarity is greater than 0.8
___ %>%
# Compute the results
___
# See the available datasets
___
# Examine the class of the computed results
___