如何使用基于knn的项目推荐程序从命令行运行mahout?

kpbpu008  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(428)

我是新手,还在想办法。
我正在尝试使用在hadoop集群(分布式推荐程序)中运行的mahout 0.8运行一个基于knn的推荐程序。我使用的是mahout 0.8,所以knn已经被弃用了,但它仍然可用(至少当我用java代码编写它时)
我有几个问题:
基本上有两种mahout实现是真的吗?分布式(从命令行运行)非分布式(从jar文件运行)
假设(1)是正确的,mahout支持是否从命令行运行基于knn的推荐程序?有人能给我一个方向吗?
假设(1)是错误的,我如何用java(我使用的是eclipse)构建一个在hadoop集群(分布式)中运行的推荐程序?
谢谢!

31moq8wy

31moq8wy1#

knn被弃用是因为它被基于项目和基于用户的协同出现推荐器和als-wr推荐器所取代,后者更好,更现代。
是的,但并非所有代码都有cli接口。mahout中的cli作业大部分是hadoop/分布式作业,它们在hdfs中生成文件以供输出。这些可以从jar文件运行,并使用自己的代码 Package 它们,就像本地/非分布式/非hadoop版本(没有cli)一样。内存中的推荐程序要求您传入一个用户id来获取rec,因此您必须编写代码来实现这一点。hadoop版本有一个cli,因为它们为所有用户预先计算所有rec并将它们放入文件中。您可能会将它们插入数据库或以其他方式提供它们。
不,据我所知,命令行只支持基于用户、基于项目和基于项目的推荐程序。这将运行推荐程序的hadoop/分布式版本。这可以在一台机器上工作,当然,甚至可以使用本地文件系统,因为hadoop可以这样设置。
对于内存中的推荐程序,只需编写驱动程序代码并在eclipse中运行它们,因为hadoop不涉及,所以它可以正常工作。如果您想使用hadoop版本,请在您的dev机器上设置hadoop,使其使用本地文件系统在本地运行,并且在eclipse中一切正常。一旦调试好了,就把它移到hadoop集群中。您也可以在集群上远程调试,但这完全是另一个问题。
mahout推荐程序的最新内容是使用hadoop在后台进行训练,然后输出由solr索引。然后用用户表示喜欢的项查询solr,因为用户从solr查询中几乎实时返回,所以不需要预先计算所有用户的所有rec。这在mahout 1.0-snapshot的mahout/examples/或这里https://github.com/pferrel/solr-recommender
顺便说一句,这段代码正在与mahout 1.0集成,并改为在spark而不是hadoop上运行,因此即使是训练步骤也会快得多。
更新:我已经澄清了可以从上面的cli运行什么。

相关问题