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 l’envoyer à Spark. C’est une excellente solution pour les manipulations de base, mais elle montre ses limites dès que vous souhaitez effectuer des traitements plus complexes. Par exemple, vous pouvez calculer la moyenne d’une colonne, mais pas la médiane. Voici l’exemple issu 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 propose également deux interfaces « natives » qui seront abordées dans les deux prochains chapitres. « Natives » signifie qu’elles appellent directement du code Java ou Scala pour accéder aux bibliothèques de Spark, sans aucune conversion en SQL. sparklyr prend en charge l’API (Application Programming Interface) des DataFrames 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 » commençant par ft_, et des fonctions de « machine learning » commençant par ml_.
Une différence philosophique importante entre le travail avec R et celui avec Spark est que Spark est bien plus strict sur les types de variables que R. La plupart des fonctions natives attendent des entrées DoubleType et renvoient des sorties DoubleType. DoubleType est l’équivalent, dans Spark, du type de vecteur numeric de R. sparklyr se charge de convertir numeric en DoubleType, mais il vous revient (oui, vous !) de convertir les données logical ou integer en numeric, puis de revenir en sens inverse si nécessaire.
Laquelle de ces affirmations est vraie ?
- Les méthodes
dplyrdesparklyrconvertissent le code en Scala avant de l’exécuter sur Spark. - La conversion du code R en SQL limite le nombre de calculs pris en charge.
- La plupart des fonctions de modélisation de Spark MLlib requièrent des entrées
DoubleTypeet renvoient des sortiesDoubleType. - La plupart des fonctions de modélisation de Spark MLlib requièrent des entrées
IntegerTypeet renvoient des sortiesBooleanType.
Cet exercice fait partie du cours
Introduction à Spark avec sparklyr en R
Exercice interactif pratique
Passez de la théorie à la pratique avec l’un de nos exercices interactifs
Commencer l’exercice