Ver el esquema
Como ya sabes de capítulos anteriores, la implementación de ALS en Spark requiere que los movieId y userId se proporcionen como tipos de dato enteros. Muchos conjuntos de datos deben prepararse en consecuencia para que funcionen correctamente con Spark. Un problema común es que Spark interpreta números como cadenas y viceversa.
Aquí usarás el método .cast() para tratar este tipo de problemas. Vamos a revisar el esquema del conjunto de datos para asegurarnos de que tiene el formato correcto.
Este ejercicio forma parte del curso
Creación de motores de recomendación con PySpark
Instrucciones del ejercicio
- Usa
.printSchema()para comprobar si el conjunto de datos de ratings contiene los tipos de dato adecuados para que ALS funcione correctamente. ¿LosuserIdymovieIdse proporcionan como tipos enteros? ¿Losratingestán en formato numérico? - Asegúrate de que las columnas del dataframe
ratingstengan los tipos de dato correctos. Llama al métodocast()en cada columna y especifica que las columnasuserIDymovieIdsean de tipo"integer"y que la columnaratingsea de tipo"double". (No necesitamos la columnatimestamp, así que podemos omitirla.) - Vuelve a llamar a
.printSchema()sobreratingspara confirmar que ahora los tipos de dato son correctos.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# 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.____()