[python] سبارك ألس بريكتيفال إرجاع فارغة


Answers

Question

لدي رمز اختبار بيثون التالي (يتم تعريف الوسيطات إلى ALS.train في مكان آخر):

 r1 = (2, 1)
 r2 = (3, 1)
 test = sc.parallelize([r1, r2]) 
 model = ALS.train(ratings, rank, numIter, lmbda)
 predictions = model.predictAll(test)

 print test.take(1)     
 print predictions.count()
 print predictions

الذي يعمل، لأنه يحتوي على عدد 1 ضد متغير التنبؤات والمخرجات:

[(2, 1)]
1
ParallelCollectionRDD[2691] at parallelize at PythonRDD.scala:423

ومع ذلك، عندما أحاول واستخدام ردد أنا خلقت نفسي باستخدام التعليمات البرمجية التالية، فإنه لا يبدو للعمل بعد الآن:

model = ALS.train(ratings, rank, numIter, lmbda)
validation_data = validation.map(lambda xs: tuple(int(x) for x in xs))
predictions = model.predictAll(validation_data)

print validation_data.take(1)
print predictions.count()
print validation_data

أي النواتج:

[(61, 3864)]
0
PythonRDD[4018] at RDD at PythonRDD.scala:43

كما ترون، بيبيكتال يعود مرة أخرى فارغة عندما مرت ردد المعينة. القيم الموجودة في كل من نفس الشكل. والفرق الملاحظ الوحيد الذي أستطيع أن أرى هو أن المثال الأول يستخدم موازية وينتج PythonRDD في حين أن المثال الثاني يستخدم فقط خريطة التي تنتج PythonRDD . هل يعمل "التنبؤ" فقط إذا تم تمرير نوع معين من ردد؟ إذا كان الأمر كذلك، هل من الممكن تحويل بين أنواع ردد؟ لست متأكدا من كيفية الحصول على هذا العمل.






Links