Định dạng đúng và danh sách người dùng duy nhất
Xem qua dataframe R. Lưu ý rằng nó đang ở định dạng thông thường hay "rộng" (wide), với mỗi cột là một bộ phim khác nhau. Cũng lưu ý rằng tên User và tên phim không ở dạng số nguyên. Hãy làm theo các bước để chuẩn bị dữ liệu này đúng cách cho ALS.
Bài tập này là một phần của khóa học
Xây dựng Recommendation Engine với PySpark
Hướng dẫn bài tập
- Import gói
monotonically_increasing_idtừpyspark.sql.functionsvà xem dataframeRbằng phương thức.show(). - Dùng hàm
to_long()để chuyển dataframeRsang dạng dữ liệu "dài" (long). Gọi dataframe mới làratings. - Tạo một dataframe tên
userschứa tất cả người dùng.distinct()từ dataframe và gom lại dataframe thành một phân vùng bằng phương thức.coalesce(1). - Dùng phương thức
monotonically_increasing_id()bên trongwithColumn()để tạo một cột mới trong dataframe users, chứa một số nguyên duy nhất cho mỗi người dùng. Đặt tên cột này làuserId. Nhớ gọi phương thức.persist()trên dataframe cuối cùng để đảm bảo các ID số nguyên mới được lưu giữ.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Import monotonically_increasing_id and show R
from pyspark.sql.functions import ____
R.show()
# Use the to_long() function to convert the dataframe to the "long" format.
ratings = to_long(____)
ratings.show()
# Get unique users and repartition to 1 partition
users = ratings.select("____").____().____()
# Create a new column of unique integers called "userId" in the users dataframe.
users = users.withColumn("____", monotonically_increasing_id()).____()
users.show()