CommencezCommencez gratuitement

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

Voir le cours

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. Les userId et movieId sont-ils fournis comme entiers (integer) ? Les rating sont-ils en format numérique ?
  • Assurez-vous que les colonnes du dataframe ratings sont des types de données adéquats. 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, donc nous pouvons l'ignorer.)
  • Appelez de nouveau .printSchema() sur ratings pour 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.____()
Modifier et exécuter le code