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 ?
- Les méthodes
dplyrdesparklyrconvertissent le code en code Scala avant de l'exécuter sur Spark. - La conversion du code R en code SQL limite le nombre de calculs pris en charge.
- La plupart des fonctions de modélisation de Spark MLlib exigent des entrées
DoubleTypeet retournent des sortiesDoubleType. - La plupart des fonctions de modélisation de Spark MLlib exigent des entrées
IntegerTypeet retournent des sortiesBooleanType.
Cette activité fait partie du cours
Introduction à Spark avec sparklyr en R
Exercice interactif pratique
Passez de la théorie à l’action grâce à l’un de nos exercices interactifs
Commencer l’exercice