我正在尝试使用Spark的MLlib库构建推荐系统。 (使用Scala) 为了能够使用ALS训练方法,我需要使用Rating()方法(org.apache.spark.mllib.recommendation.Rating包的一部分)构建一个评级矩阵。该方法需要将int作为用户标识传递。但是,我正在使用的数据集有11位id,因此当我尝试传递它时会抛出错误。
有没有人知道我是否可以通过这种方式将长值传递给Rating方法?或者某种方式来覆盖这种方法?或者某种程度上将11位数字唯一地转换为10或9位数,同时保持它为int?
任何帮助将不胜感激。感谢
答案 0 :(得分:2)
我认为这取决于您的ID范围。你能简单地使用Id模数Int.MaxValue吗?那就是:
(id % Int.MaxValue).toInt
或者你可以将它哈希到Int?
id.hashCode