gpt4 book ai didi

hadoop - Mahout 运行分布式推荐给出空文件

转载 作者:可可西里 更新时间:2023-11-01 16:59:51 25 4
gpt4 key购买 nike

我正在阅读 Mahout in Action 一书并试用分布式推荐引擎示例。但是我在示例中使用了一个小型数据集,而不是维基百科数据集。

输入.txt->

1,15
1,13
1,12
1,10
2,11
2,15
2,20
2,17
2,12
3,10

用户.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

map reduce 运行正常。但是,当我检查 bin/hadoop fs -cat output/中的输出时
部分-r-00000

我找到了一个空文件。

谁能给我解释一下这是怎么回事?如果我理解正确的话,Recommender Job 应该已经构建了一个项目到项目相似度矩阵,将它与用户-项目矩阵(来自 user.txt)相乘并产生结果。

需要一些帮助来理解。我在单个节点上使用 Mahout 0.5 和 hadoop 1.2。希望不是版本兼容性的问题。

编辑

如果我将 user.txt 更改为

,我会得到答案

2

1

最佳答案

首先使用 Mahout 0.9 或当前源代码构建。 0.5 非常陈旧和过时。我知道它在书中使用过,但许多示例仍然适用于更新的代码。

其次,您的数据中很少同时出现。如果您想了解推荐系统的工作原理,请尝试此博客 post使用如此小的数据集很容易产生无共现,这将导致空的推荐。帖子中有一个非常小的数据集,旨在生成一些推荐但不会为所有用户生成推荐。

第三,确保对所有项目和用户使用 Mahout ID。这意味着用户 x 项目矩阵中的行号和列号。对于项目 ID,它们必须是 0 到项目数减一,对于用户 ID,它们必须是 0 到用户数减一。使用其他任何东西都会导致虚假结果。对于您可以在其中使用任何唯一字符串的多个 Mahout 1.0 Spark 作业,此限制已被删除。但是 Hadoop mapreduce 代码仍然需要这些 ID

关于hadoop - Mahout 运行分布式推荐给出空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25660265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com