将长值传递给MLlib的Rating()方法

时间:2014-06-19 13:08:16

标签: scala apache-spark apache-spark-mllib

我正在尝试使用Spark的MLlib库构建推荐系统。 (使用Scala) 为了能够使用ALS训练方法,我需要使用Rating()方法(org.apache.spark.mllib.recommendation.Rating包的一部分)构建一个评级矩阵。该方法需要将int作为用户标识传递。但是,我正在使用的数据集有11位id,因此当我尝试传递它时会抛出错误。

有没有人知道我是否可以通过这种方式将长值传递给Rating方法?或者某种方式来覆盖这种方法?或者某种程度上将11位数字唯一地转换为10或9位数,同时保持它为int?

任何帮助将不胜感激。感谢

1 个答案:

答案 0 :(得分:2)

我认为这取决于您的ID范围。你能简单地使用Id模数Int.MaxValue吗?那就是:

(id % Int.MaxValue).toInt

或者你可以将它哈希到Int?

id.hashCode