Format correct et utilisateurs distincts
Examinez le dataframe R. Remarquez qu’il est au format classique, dit « large », avec un film différent dans chaque colonne. Notez aussi que les noms des User et des films ne sont pas au format entier. Suivez les étapes pour préparer correctement ces données pour ALS.
Cet exercice fait partie du cours
<cours>Créer des moteurs de recommandation avec PySpark</cours>Instructions de l’exercice
- Importez le module
monotonically_increasing_iddepuispyspark.sql.functionset affichez le dataframeRavec la méthode.show(). - Utilisez la fonction
to_long()pour convertir le dataframeRau format « long ». Nommez le nouveau dataframeratings. - Créez un dataframe appelé
usersqui contient tous les utilisateurs.distinct()issus du dataframe et réduisez le nombre de partitions à une avec la méthode.coalesce(1). - Utilisez la méthode
monotonically_increasing_id()au sein dewithColumn()pour créer une nouvelle colonne dans le dataframe des utilisateurs qui contienne un entier unique pour chaque utilisateur. Nommez cette colonneuserId. Veillez à appeler la méthode.persist()sur le dataframe final pour que les nouveaux identifiants entiers soient conservés.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Import monotonically_increasing_id and show R
from pyspark.sql.functions import ____
R.show()
# Use the to_long() function to convert the dataframe to the "long" format.
ratings = to_long(____)
ratings.show()
# Get unique users and repartition to 1 partition
users = ratings.select("____").____().____()
# Create a new column of unique integers called "userId" in the users dataframe.
users = users.withColumn("____", monotonically_increasing_id()).____()
users.show()