Podgląd schematu
Jak wiesz z poprzednich rozdziałów, implementacja ALS w Sparku wymaga, aby kolumny movieId i userId były w formacie całkowitoliczbowym (integer). Wiele zbiorów danych wymaga odpowiedniego przygotowania, zanim będą poprawnie współpracować ze Sparkiem. Częstym problemem jest to, że Spark traktuje liczby jako ciągi znaków – i odwrotnie.
W tym ćwiczeniu użyjesz metody .cast(), aby rozwiązać tego rodzaju problemy. Zacznij od sprawdzenia schematu zbioru danych i upewnij się, że dane mają właściwy format.
To ćwiczenie jest częścią kursu
Budowanie silników rekomendacji w PySpark
Instrukcje do ćwiczenia
- Użyj
.printSchema(), aby sprawdzić, czy zbiór danych z ocenami zawiera odpowiednie typy danych dla ALS. Czy kolumnyuserIdimovieIdsą typu integer? Czy kolumnaratingma format liczbowy? - Upewnij się, że kolumny ramki danych
ratingsmają właściwe typy danych. Wywołaj metodęcast()na każdej kolumnie: ustawuserIDimovieIdjako typ"integer", aratingjako typ"double". (Kolumnatimestampnie jest nam potrzebna, więc możesz ją pominąć.) - Wywołaj
.printSchema()ponownie naratings, aby potwierdzić, że typy danych są teraz poprawne.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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.____()