Visualizza schema
Come sai dai capitoli precedenti, l'implementazione di Spark di ALS richiede che movieId e userId siano forniti come tipi di dato interi. Molti insiemi di dati devono essere preparati di conseguenza per funzionare correttamente con Spark. Un problema comune è che Spark interpreti i numeri come stringhe, o viceversa.
Qui userai il metodo .cast() per risolvere questo tipo di problemi. Diamo un'occhiata allo schema dell'insieme di dati per assicurarci che sia nel formato corretto.
Questo esercizio fa parte del corso
Costruire motori di raccomandazione con PySpark
Istruzioni dell'esercizio
- Usa
.printSchema()per verificare se il dataset delle valutazioni contiene i tipi di dato corretti perché ALS funzioni correttamente. IuserIde imovieIdsono forniti come tipi interi? Leratingsono in formato numerico? - Assicurati che le colonne del dataframe
ratingsabbiano i tipi di dato corretti. Chiama il metodocast()su ogni colonna e specifica che le colonneuserIDemovieIdsiano di tipo"integer"e la colonnaratingsia di tipo"double". (Non ci serve la colonnatimestamp, quindi possiamo tralasciarla.) - Richiama
.printSchema()suratingsper confermare che ora i tipi di dato siano corretti.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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.____()