Spark推荐引擎推荐已经互动的项目

时间:2016-10-21 09:32:15

标签: scala apache-spark

我已经开始在一个小型集群上使用Spark来制作推荐引擎。

目的是推荐用户可能依赖于他们已经购买该书的事实的书籍。

到目前为止,我有两个问题:

第一个是如果数据集包含超过5Mln的观察值,以下代码将生成OutOfMemory / StackOverFlow错误。

val rec_model: MatrixFactorizationModel = ALS.trainImplicit(ratings,RANK,ITERATIONS,LAMBDA,ALPHA)
val recs = rec_model.recommendProductsForUsers(N_ITEMS_TO_RECOMMEND)

作为一种解决方法,我在较小的数据集中拆分用户,现在推荐引擎似乎正常工作,但输出包含用户已购买的书籍的建议。如何避免这种情况?

更新1:

我在SparkContext中添加了checkpoint目录,现在我的ALS模型训练代码看起来像这样,现在应该阻止OOME:

val rec_model: MatrixFactorizationModel =
      new ALS()
        .setCheckpointInterval(5)
        .setRank(RANK)
        .setIterations(ITERATIONS)
        .setLambda(LAMBDA)
        .setAlpha(ALPHA)
        .setImplicitPrefs(true)
        .run(rdd)

0 个答案:

没有答案