CommencezCommencez gratuitement

Programme double au cinéma

Les méthodes dplyr que vous avez vues dans les deux chapitres précédents utilisent l'interface SQL de Spark. Autrement dit, elles convertissent votre code R en code SQL avant de le transmettre à Spark. C'est une excellente solution pour la manipulation de données de base, mais elle atteint ses limites lorsqu'on veut effectuer des traitements plus complexes. Par exemple, vous pouvez calculer la moyenne d'une colonne, mais pas la médiane. Voici l'exemple tiré de l'exercice « Résumer des colonnes » que vous avez réalisé au chapitre 1.

track_metadata_tbl %>%
  summarize(mean_duration = mean(duration)) #OK
track_metadata_tbl %>%
  summarize(median_duration = median(duration))

sparklyr offre aussi deux interfaces « natives » qui seront abordées dans les deux prochains chapitres. « Natif » signifie qu'elles appellent du code Java ou Scala pour accéder directement aux bibliothèques de Spark, sans aucune conversion en SQL. sparklyr prend en charge l'API (Application Programming Interface) des DataFrames de Spark, avec des fonctions préfixées par sdf_. Il permet aussi d'accéder à la bibliothèque de Machine Learning de Spark, MLlib, avec des fonctions de « transformation de caractéristiques » qui commencent par ft_, et des fonctions de « machine learning » qui commencent par ml_.

Une différence philosophique importante entre le travail avec R et celui avec Spark est que Spark est beaucoup plus strict que R quant aux types de variables. La plupart des fonctions natives exigent des entrées DoubleType et retournent des sorties DoubleType. DoubleType est l'équivalent, dans Spark, du type de vecteur numeric en R. sparklyr s'occupe de convertir numeric en DoubleType, mais c'est à l'utilisateur (vous !) de convertir les données de type logical ou integer en données numeric, puis de revenir au besoin.

Laquelle de ces affirmations est vraie ?

  1. Les méthodes dplyr de sparklyr convertissent le code en code Scala avant de l'exécuter sur Spark.
  2. La conversion du code R en code SQL limite le nombre de calculs pris en charge.
  3. La plupart des fonctions de modélisation de Spark MLlib exigent des entrées DoubleType et retournent des sorties DoubleType.
  4. La plupart des fonctions de modélisation de Spark MLlib exigent des entrées IntegerType et retournent des sorties BooleanType.

Cette activité fait partie du cours

Introduction à Spark avec sparklyr en R

Voir le cours

Exercice interactif pratique

Passez de la théorie à l’action grâce à l’un de nos exercices interactifs

Commencer l’exercice