Просмотр схемы
Как вы знаете из предыдущих глав, реализация ALS в Spark требует, чтобы значения movieId и userId были представлены как целые числа (тип integer). Многие наборы данных необходимо подготовить соответствующим образом, иначе они не будут корректно работать со Spark. Распространённая проблема — Spark воспринимает числа как строки, и наоборот.
Здесь вы будете использовать метод .cast(), чтобы решить подобные проблемы с типами. Для начала давайте проверим схему набора данных и убедимся, что она соответствует нужному формату.
Это упражнение является частью курса
Построение рекомендательных систем с помощью PySpark
Инструкции к упражнению
- Используйте
.printSchema(), чтобы проверить, содержит ли набор данных с оценками правильные типы данных для корректной работы ALS. Представлены лиuserIdиmovieIdкак целые числа (integer)? Записаны лиratingв числовом формате? - Убедитесь, что столбцы датафрейма
ratingsимеют правильные типы данных. Вызовите методcast()для каждого столбца: укажите тип"integer"для столбцовuserIDиmovieId, а тип"double"— для столбцаrating. (Столбец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.____()