Hadoop 运行分布式推荐的Mahout提供了空文件
我正在阅读Mahout in Action手册,并尝试分布式推荐引擎示例。但我使用的不是维基百科数据集,而是一个小数据集作为示例 input.txt->Hadoop 运行分布式推荐的Mahout提供了空文件,hadoop,mahout,recommendation-engine,mahout-recommender,Hadoop,Mahout,Recommendation Engine,Mahout Recommender,我正在阅读Mahout in Action手册,并尝试分布式推荐引擎示例。但我使用的不是维基百科数据集,而是一个小数据集作为示例 input.txt-> 1,15 1,13 1,12 1,10 2,11 2,15 2,20 2,17 2,12 3,10 user.txt-> 3 其中input.txt和user.txt的格式为user,item和input.txt表示用户过去购买的物品,user.txt表示当前购买的物品 当我在hdfs中复制这两个文件并运行 hadoop jar mahou
1,15
1,13
1,12
1,10
2,11
2,15
2,20
2,17
2,12
3,10
user.txt->
3
其中input.txt和user.txt的格式为user,item
和input.txt表示用户过去购买的物品,user.txt表示当前购买的物品
当我在hdfs中复制这两个文件并运行
hadoop jar mahout-core-0.5-job.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输出中检查输出时/
r-00000部分
我发现一个空文件
有人能解释一下出了什么问题吗?
如果我正确理解了推荐人的工作,那么应该构建一个条目到条目的相似性矩阵,将其与用户条目矩阵(来自user.txt)相乘,并生成结果
需要一些帮助来理解。我在单个节点上使用Mahout 0.5和hadoop 1.2。我希望这不是版本兼容性的问题
编辑
如果我将user.txt更改为
二,
或
一,
首先,使用Mahout 0.9或当前源代码构建。0.5是非常古老和过时的。我知道这本书中使用了它,但许多示例仍然适用于较新的代码 其次,您的数据中很少出现协同现象。如果你想了解推荐人是如何工作的,试试这个博客,使用这样小的数据集很容易就不会产生重复,这会导致空推荐。在这篇文章中,有一个非常小的数据集,旨在生成一些REC,但不会为所有用户生成REC
第三,确保对所有项目和用户使用Mahout ID。这意味着用户x项矩阵中的行数和列数。对于项目ID,它们必须是0到项目数减去1,对于用户ID,它们必须是0到用户数减去1。使用其他任何东西都会导致虚假的结果。对于一些Mahout 1.0 Spark作业,此限制已被删除,在这些作业中,您可以使用任何唯一字符串。但是Hadoop mapreduce代码仍然需要这些ID您能在这里发布您正在使用的代码吗?也许你使用的是一个无效的数据模型……我认为这不是模型的问题。检查我的编辑。可能用户3没有足够的首选项,程序无法为他提供建议?是的,就像你在文件中看到的,用户只有一个首选项。然而,即使对于1个事务,用户项目矩阵也应该有1个条目,并且与项目相似性矩阵相乘应该会得到一些结果。我不确定我是否完全理解内部工作原理。@abhiropsarkar:你忘记投票/接受或对现有答案给出某种反馈。