我正在阅读Mahout,并尝试使用分布式推荐引擎示例。但是,我在示例中使用的不是Wikipedia数据集,而是一个小数据集。
输入>
1,15
1,13
1,12
1,10
2,11
2,15
2,20
2,17
2,12
3,10user.txt->
3在input.txt和user.txt的形式中,user,item和input.txt表示用户过去购买的商品,user.txt表示当前购买的商品。
当我在hdfs中复制这两个文件并运行
hadoop mahout-核心-0.5-core. jar \ org.apache.mahout.cf.taste.hadoop.item.RecommenderJob \ -Dmapred.input.dir=input/input.txt \ -Dmapred.output.dir=output -usersFile input/user.txt-booleanData
地图减少正常运行。但是,当我在bin/hadoop fs -cat output/ part-r-00000中检查输出时
我找到了一个空文件。
有人能解释我出了什么问题吗?如果我要正确理解推荐作业应该已经建立了一个项目到项目的相似矩阵,它与用户项目矩阵(从user.txt),并产生结果。
需要帮助理解。我在单个节点上使用Mahout0.5和Hadoop1.2。我希望这不是一个版本兼容性问题。
编辑
如果我将user.txt更改为
2
或
1
发布于 2014-09-05 14:34:55
首先,使用Mahout0.9或当前源代码构建。0.5是非常古老和过时的。我知道这本书中使用了它,但许多示例仍然适用于更新的代码。
其次,您的数据中很少有同现。如果您想了解推荐程序是如何工作的,请尝试使用这种小数据集的博客帖子可以很容易地产生不出现的结果,这将导致空的推荐。在文章中,有一个非常小的数据集,旨在生成一些recs,但不会为所有用户生成recs。
第三,确保对所有项目和用户使用Mahout。这意味着用户x项矩阵中的行号和列号。项目编号必须为0,项目ID为减1,用户编号为0,用户ID为减1。使用其他任何东西都会导致虚假的结果。对于一些Mahout1.0星火作业,您可以使用任何唯一的字符串,这一限制已经被删除。但是代码仍然需要这些ID
https://stackoverflow.com/questions/25660265
复制相似问题