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 devrait être faite qu'en cas de réelle nécessité.
L'opérateur de chaînage est très pratique pour enchaîner des commandes de manipulation de données, mais en général, vous ne pouvez pas faire toute une analyse en reliant absolument tout. Par exemple, ceci 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 des calculs intermédiaires, mais vous ne voulez pas les « collecter » car c'est lent. La solution consiste à utiliser compute() pour exécuter le calcul, mais à enregistrer les résultats dans une trame de données temporaire sur Spark. compute prend deux arguments : un tibble et un nom de variable pour la trame de données Spark qui stockera les résultats.
a_tibble %>%
# certains calculs %>%
compute("intermediate_results")
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 lié aux métadonnées de pistes stockées dans Spark a été défini à l'avance comme track_metadata_tbl.
- Filtrez les lignes de
track_metadata_tbloùartist_familiarityest supérieure à 0.8. - Calculez les résultats avec
compute().- Enregistrez les résultats dans une trame de données Spark nommée
"familiar_artists". - Affectez le résultat à un tibble R nommé
computed.
- Enregistrez les résultats dans une trame de données Spark nommé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 ce code d’exemple.
# 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
___