ดู Schema
ดังที่ทราบจากบทก่อนหน้า การใช้งาน ALS ใน Spark กำหนดให้ movieId และ userId ต้องเป็นชนิดข้อมูล integer ชุดข้อมูลหลายชุดจำเป็นต้องเตรียมข้อมูลให้ถูกต้องก่อนที่จะใช้งานร่วมกับ Spark ได้ ปัญหาที่พบบ่อยคือ Spark อาจตีความตัวเลขเป็น string หรือตีความ string เป็นตัวเลขโดยไม่ถูกต้อง
ในแบบฝึกหัดนี้ จะใช้เมธอด .cast() เพื่อแก้ไขปัญหาประเภทข้อมูล มาตรวจสอบ schema ของชุดข้อมูลกันก่อนเพื่อให้แน่ใจว่าอยู่ในรูปแบบที่ถูกต้อง
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้าง Recommendation Engines ด้วย PySpark
คำแนะนำการฝึกหัด
- ใช้
.printSchema()เพื่อตรวจสอบว่าชุดข้อมูล ratings มีชนิดข้อมูลที่ถูกต้องสำหรับการใช้งาน ALS หรือไม่ โดยดูว่าuserIdและmovieIdเป็นชนิด integer หรือไม่ และratingอยู่ในรูปแบบตัวเลขหรือไม่ - ตรวจสอบให้แน่ใจว่าคอลัมน์ใน dataframe
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.____()