स्कीमा देखें
जैसा कि आप पिछले चैप्टर्स से जानते हैं, Spark में ALS की implementation के लिए movieId और userId का datatype integer होना चाहिए. कई datasets को Spark के साथ सही तरह से काम कराने के लिए पहले से तैयार करना पड़ता है. एक आम समस्या यह होती है कि Spark कभी-कभी numbers को strings समझ लेता है, और कभी उल्टा.
यहाँ, आप ऐसी दिक्कतों को दूर करने के लिए .cast() मेथड का इस्तेमाल करेंगे. आइए, डेटासेट के स्कीमा पर नज़र डालें ताकि पक्का हो सके कि फ़ॉर्मेट सही है.
यह अभ्यास पाठ्यक्रम का हिस्सा है
PySpark के साथ Recommendation Engines बनाना
अभ्यास निर्देश
.printSchema()का उपयोग करके जाँचें कि ratings डेटासेट में ALS के लिए उपयुक्त data types हैं या नहीं. क्याuserIdऔरmovieIdinteger datatype में हैं? क्याratingnumeric फ़ॉर्मेट में है?ratingsडेटाफ़्रेम के कॉलम्स को सही data types में सुनिश्चित करें. हर कॉलम परcast()मेथड कॉल करें औरuserIDतथाmovieIdकॉलम्स को"integer"टाइप में तथाratingकॉलम को"double"टाइप में सेट करें. (हमेंtimestampकॉलम की ज़रूरत नहीं है, इसे छोड़ सकते हैं.)- डेटा types अब सही हैं या नहीं, यह पुष्टि करने के लिए
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.____()