CommencerCommencer gratuitement

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

Afficher le cours

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_tblartist_familiarity est 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.
  • Affichez les jeux de données Spark disponibles avec src_tbls().
  • Affichez la class() de computed. Remarquez qu’à la différence de collect(), 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
___
Modifier et exécuter le code