Formato correcto y usuarios distintos
Echa un vistazo al dataframe R. Observa que está en formato convencional o «ancho», con una película distinta en cada columna. Fíjate también en que los nombres de User y de las películas no están en formato entero. Sigue los pasos para preparar correctamente estos datos para ALS.
Este ejercicio forma parte del curso
Creación de motores de recomendación con PySpark
Instrucciones del ejercicio
- Importa el paquete
monotonically_increasing_iddesdepyspark.sql.functionsy visualiza el dataframeRusando el método.show(). - Usa la función
to_long()para convertir el dataframeRa un dataframe en formato «largo». Llamaratingsal nuevo dataframe. - Crea un dataframe llamado
usersque contenga todos los usuarios.distinct()del dataframe y vuelve a particionarlo en una sola partición usando el método.coalesce(1). - Usa el método
monotonically_increasing_id()dentro dewithColumn()para crear una columna nueva en el dataframe de usuarios que contenga un entero único para cada usuario. Llama a esta columnauserId. Asegúrate de llamar al método.persist()en el dataframe final para que los nuevos ID enteros persistan.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# 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()