Afficher le schéma
Comme vous l'avez vu dans les chapitres précédents, l'implémentation d'ALS dans Spark exige que les movieId et userId soient fournis en tant qu'entiers (integer). Plusieurs jeux de données doivent donc être préparés en conséquence pour fonctionner correctement avec Spark. Un problème courant est que Spark interprète parfois des nombres comme des chaînes de caractères, et l'inverse.
Ici, vous allez utiliser la méthode .cast() pour régler ce type de problème. Examinons le schéma du jeu de données pour nous assurer qu'il est au bon format.
Cette activité fait partie du cours
Créer des moteurs de recommandation avec PySpark
Instructions de l’exercice
- Utilisez
.printSchema()pour vérifier si le jeu de données des évaluations contient les bons types de données pour qu'ALS fonctionne correctement. LesuserIdetmovieIdsont-ils fournis comme entiers (integer) ? Lesratingsont-ils en format numérique ? - Assurez-vous que les colonnes du dataframe
ratingssont des types de données adéquats. 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, donc nous pouvons l'ignorer.) - Appelez de nouveau
.printSchema()surratingspour confirmer que les types de données sont maintenant 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.____()