檢視結構(Schema)
如同你在前面章節所學,Spark 的 ALS 實作要求 movieId 與 userId 必須是整數型別。為了能與 Spark 正常運作,很多資料集都需要先做相應的準備。常見的問題是 Spark 把數字誤認為字串,或反過來。
在這裡,你會用 .cast() 方法來解決這類型的問題。我們先檢視這個資料集的結構,確認它的格式是否正確。
本練習屬於課程
使用 PySpark 打造推薦引擎
練習說明
- 使用
.printSchema()檢查評分資料集的欄位型別是否適用於 ALS。userId和movieId是否為整數型別?rating是否為數值格式? - 確認
ratings資料框各欄位的資料型別正確。對每個欄位呼叫cast(),並將userID與movieId指定為型別"integer",rating指定為型別"double"。(我們不需要timestamp欄位,可以略過。) - 再次對
ratings呼叫.printSchema(),確認資料型別已經正確。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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.____()