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>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. LesuserIdetmovieIdsont-ils bien des entiers ? Lesratingsont-elles en format numérique ? - Assurez-vous que les colonnes du dataframe
ratingssont des types appropriés. Appelez la méthodecast()sur chaque colonne et indiquez que les colonnesuserIDetmovieIddoivent être de type"integer"et que la colonneratingdoit être de type"double". (Nous n’avons pas besoin de la colonnetimestamp, vous pouvez donc l’ignorer.) - Appelez de nouveau
.printSchema()surratingspour 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.____()