我試圖在PySpark MLlib(1.3.1)中的ALS模型中使用長用戶/產品ID,並且遇到問題。代碼的簡化版本,在這裏給出:如何在PySpark ALS中使用長用戶ID
from pyspark import SparkContext
from pyspark.mllib.recommendation import ALS, Rating
sc = SparkContext("","test")
# Load and parse the data
d = [ "3661636574,1,1","3661636574,2,2","3661636574,3,3"]
data = sc.parallelize(d)
ratings = data.map(lambda l: l.split(',')).map(lambda l: Rating(long(l[0]), long(l[1]), float(l[2])))
# Build the recommendation model using Alternating Least Squares
rank = 10
numIterations = 20
model = ALS.train(ratings, rank, numIterations)
運行此代碼產生一個java.lang.ClassCastException
因爲代碼試圖多頭轉換爲整數。通過源代碼查看,Spark中的ml ALS class允許使用長/用戶ID,但mllib ALS class強制使用整數。
問題:在PySpark ALS中使用長用戶/產品ID是否有解決方法?