我尝试在 PySpark MLlib (1.3.1) 的 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)
Run Code Online (Sandbox Code Playgroud)
运行此代码会产生 a java.lang.ClassCastException,因为该代码正在尝试将长整型转换为整数。查看源代码, Spark 中的ml ALS 类允许使用长用户/产品 ID,但mllib ALS 类强制使用整数。
问题:是否有解决方法可以在 PySpark …