Inizia subitoInizia gratis

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

Visualizza corso

Istruzioni dell'esercizio

  • Usa .printSchema() per verificare se il dataset delle valutazioni contiene i tipi di dato corretti perché ALS funzioni correttamente. I userId e i movieId sono forniti come tipi interi? Le rating sono in formato numerico?
  • Assicurati che le colonne del dataframe ratings abbiano i tipi di dato corretti. Chiama il metodo cast() su ogni colonna e specifica che le colonne userID e movieId siano di tipo "integer" e la colonna rating sia di tipo "double". (Non ci serve la colonna timestamp, quindi possiamo tralasciarla.)
  • Richiama .printSchema() su ratings per 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.____()
Modifica ed esegui il codice