我正在尝试缓存产品特性和用户特性,以提高SparkMatrixFactorizationModel
预测时间。在
我所做的:
训练模型ALS。
保存模型。
加载模型并缓存用户特性和产品特性。
代码段:
spark_config = SparkConf().setAll([('spark.executor.memory', '8g'), ('spark.cores.max', '4')])`
sc = SparkContext(conf=spark_config)
self.als_recommender = MatrixFactorizationModel.load(sc,Path)
self.als_recommender.userFeatures().cache()
self.als_recommender.productFeatures().cache()
我也收到了同样的警告预测是缓慢:-在
^{pr2}$
这似乎是你先前的问题The prediction time of spark matrix factorization的后续问题。在
诀窍是,在执行预测之前,您需要对缓存的feature执行一个操作,使其工作(在scala中):
像这样,您将强制Spark在缓存中加载数据。在
但即便如此,你也无法得到更快的预测结果。。。(100毫秒)
我建议您阅读我的以下帖子,以了解您正在努力实现的主要挑战:
Time/Space Complexity challenge in Recommendation System ?
Recommendation System to integrate with an Android app。
编辑:上面的代码不适用于pyspark,因为该模型实际上在幕后使用JavaRDD。在
^{pr2}$要解决这个问题,我们需要缓存底层的
JavaRDD
:PS:此解决方案是spark<;2.+所需的,因为在Apache spark的新版本中,该解决方案已添加到模型中。apachespark的新版本允许我们控制中间和最后阶段的存储级别(参见source code)。在
相关问题 更多 >
编程相关推荐