CommencerCommencez gratuitement

Afficher le schéma

Comme vous l’avez vu dans les chapitres précédents, l’implémentation d’ALS par Spark exige que les movieId et userId soient de type entier (integer). De nombreux jeux de données doivent donc être préparés en conséquence pour fonctionner correctement avec Spark. Un problème fréquent est que Spark interprète des nombres comme des chaînes de caractères, et inversement.

Ici, vous allez utiliser la méthode .cast() pour corriger ce type de problème. Examinons le schéma du jeu de données afin de vérifier qu’il est au bon format.

Cet exercice fait partie du cours

<cours>Créer des moteurs de recommandation avec PySpark</cours>
Voir le cours

Instructions de l’exercice

  • Utilisez .printSchema() pour vérifier si le jeu de données des notes contient les types requis pour qu’ALS fonctionne correctement. Les userId et movieId sont-ils bien des entiers ? Les rating sont-elles en format numérique ?
  • Assurez-vous que les colonnes du dataframe ratings sont des types appropriés. Appelez la méthode cast() sur chaque colonne et indiquez que les colonnes userID et movieId doivent être de type "integer" et que la colonne rating doit être de type "double". (Nous n’avons pas besoin de la colonne timestamp, vous pouvez donc l’ignorer.)
  • Appelez de nouveau .printSchema() sur ratings pour confirmer que les types sont désormais corrects.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# Use .printSchema() to see the datatypes of the ratings dataset
ratings.____()

# Tell Spark to convert the columns to the proper data types
ratings = ratings.select(ratings.userId.cast("____"), ratings.movieId.cast("____"), ratings.rating.cast("____"))

# Call .printSchema() again to confirm the columns are now in the correct format
ratings.____()
Modifier et exécuter le code