在mllib推荐模型中使用评级方法中的长数据类型

时间:2017-04-13 10:05:15

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

我有一个rdd,其中包含17位数字的电影ID,我需要在org.apache.spark.mllib.recommendation.Rating方法中输入,但该方法只接受电影ID作为整数,同样根据我的理解这是一个问题在[Spark_forums] https://issues.apache.org/jira/browse/SPARK-2465中,但状态显示"无法修复"在那边。

我正在寻找一种方法来实现这一目标而不会发生任何冲突。

val ratings = rawRatings.map { case Array(user, movie, rating) => Rating(user.toInt, movie.toInt, rating.toDouble) }

示例电影ID = 34803284448484840

1 个答案:

答案 0 :(得分:0)

如果您的id范围适合整数,则可以创建映射

val idToIndexMapping: RDD[(Long, Int)] = movieIdsRdd.zipWithIndex().cache()

并使用此映射替换数据中的值。生成推荐后,您可以反向查找原始ID以提供推荐。