4

我正在将 Mahout 评估为协作过滤推荐引擎。到目前为止,它看起来很棒。我们有来自 1200 万不同用户的近 2000 万条布尔推荐。根据Mahout 的 wiki和Sean Owen的一些线程,在这种情况下,一台机器就足够了。因此,我决定使用 MySql 作为数据模型并暂时跳过使用 Hadoop 的开销。

但有一件事让我难以理解,在不从头开始读取整个数据的情况下,不断更新建议的最佳实践是什么?我们每天都有数以万计的新建议。虽然我不希望它被实时处理,但我希望每 15 分钟左右处理一次。

请详细说明基于 Mysql 和基于 Hadoop 的部署的方法。谢谢!

4

1 回答 1

3

任何数据库都太慢而无法实时查询,因此任何方法都涉及将数据集缓存在内存中,我假设您已经在使用ReloadFromJDBCDataModel. 只需使用refresh()它以您喜欢的任何时间间隔重新加载即可。它应该在后台这样做。问题是它需要大量内存来加载新模型,同时从旧模型提供服务。您可以推出自己的解决方案,例如,一次重新加载用户。

Hadoop 上没有实时更新之类的东西。一般来说,你最好的选择是使用 Hadoop 对结果进行完整和适当的批量计算,然后在运行时(不完美)根据应用程序中保存和提供建议的新数据对其进行调整。

于 2011-11-21T09:18:11.793 回答