Vizualizarea schemei
Așa cum ai văzut în capitolele anterioare, implementarea ALS din Spark necesită ca movieId-urile și userId-urile să fie furnizate ca tipuri de date integer. Multe seturi de date trebuie pregătite în consecință pentru a funcționa corect cu Spark. O problemă frecventă este că Spark interpretează numerele ca șiruri de caractere și invers.
În acest exercițiu, vei folosi metoda .cast() pentru a rezolva astfel de probleme. Să examinăm schema setului de date și să ne asigurăm că este în formatul corect.
Acest exercițiu face parte din cursul
Construiește motoare de recomandare cu PySpark
Instrucțiuni pentru exercițiu
- Folosește
.printSchema()pentru a verifica dacă setul de date de evaluări conține tipurile de date corecte pentru ca ALS să funcționeze.userId-urile șimovieId-urile sunt furnizate ca tipuri integer?rating-urile sunt în format numeric? - Asigură-te că coloanele dataframe-ului
ratingsau tipurile de date corecte. Apelează metodacast()pe fiecare coloană și specifică tipul"integer"pentru coloaneleuserIDșimovieId, respectiv tipul"double"pentru coloanarating. (Coloanatimestampnu ne este necesară, deci o putem ignora.) - Apelează din nou
.printSchema()peratingspentru a confirma că tipurile de date sunt acum corecte.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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.____()