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

Connected

Exercice

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")

Instructions

100 XP

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_tbl où artist_familiarity est 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.
  • 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.