Я пытаюсь использовать длинный идентификатор пользователя/продукта в модели ALS в PySpark MLlib (1.3.1) и столкнулся с проблемой. Упрощенная версия кода приводится здесь:Как использовать длинный идентификатор пользователя в PySpark ALS
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
, поскольку код пытается преобразовать длинные позиции в целых числах. Просматривая исходный код, ml ALS class в Spark допускает длинные идентификаторы пользователя/продукта, но затем mllib ALS class заставляет использовать ints.
Вопрос: Существует ли временное решение для использования длинных идентификаторов пользователей/продуктов в PySpark ALS?