我正在评估Mahout作为协作过滤推荐引擎。到目前为止看起来很棒。 我们有来自12M不同用户的近20M布尔推荐。 根据{{3}}和Mahout's wiki的几个线程,在这种情况下,一台机器就足够了。因此我决定使用MySql作为数据模型,并且暂时不使用Hadoop的开销。
但有一件事让我失望,在不从头开始阅读整个数据的情况下,不断更新建议的最佳做法是什么?我们每天都有成千上万的新推荐。虽然我不希望它实时处理,但我希望每15分钟左右处理一次。
请详细说明基于Mysql和基于Hadoop的部署的方法。 谢谢!
答案 0 :(得分:3)
任何数据库都太慢而无法实时查询,因此任何方法都需要在内存中缓存数据集,这就是我假设你已经在使用ReloadFromJDBCDataModel
。只需使用refresh()
让它以您喜欢的任何间隔重新加载。它应该在后台完成。问题在于,在从旧模型提供服务时,需要大量内存来加载新模型。您可以滚动自己的解决方案,例如,一次重新加载用户。
Hadoop上没有实时更新。一般来说,最好的选择是使用Hadoop进行完整和正确的结果批量计算,然后根据持有和提供建议的应用程序中的新数据在运行时(不完美)调整它们。