CommencerCommencer 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 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 ?

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

Cet exercice fait partie du cours

Introduction à Spark avec sparklyr en R

Afficher le cours

Exercice interactif pratique

Passez de la théorie à la pratique avec l’un de nos exercices interactifs

Commencer l’exercice