Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 运行分布式推荐的Mahout提供了空文件_Hadoop_Mahout_Recommendation Engine_Mahout Recommender - Fatal编程技术网

Hadoop 运行分布式推荐的Mahout提供了空文件

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

我正在阅读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 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:你忘记投票/接受或对现有答案给出某种反馈。