Переглянути схему
Як ви знаєте з попередніх розділів, реалізація ALS у Spark вимагає, щоб movieId та userId були цілими типами даних (integer). Багато наборів даних потрібно відповідно підготувати, щоб вони коректно працювали зі Spark. Поширена проблема — Spark сприймає числа як рядки, і навпаки.
Тут ви використаєте метод .cast() для розвʼязання таких питань. Перегляньмо схему набору даних, щоб упевнитися, що формат коректний.
Ця вправа є частиною курсу
Створення рушіїв рекомендацій у PySpark
Інструкції до вправи
- Використайте
.printSchema(), щоб перевірити, чи містить набір даних ratings належні типи даних для коректної роботи ALS. Чи поданіuserIdіmovieIdяк цілі типи даних? Чи маютьratingчисловий формат? - Переконайтеся, що стовпці датафрейму
ratingsмають правильні типи даних. Викличте методcast()для кожного стовпця та вкажіть, що стовпціuserIDіmovieIdмають бути типу"integer", а стовпецьrating— типу"double". (Стовпецьtimestampнам не потрібен, тож його можна пропустити.) - Знову викличте
.printSchema()дляratings, щоб підтвердити, що типи даних тепер правильні.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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.____()