1

我正在从 Mahout 0.7 运行一些基于 RecommenderJob (org.apache.mahout.cf.taste.hadoop.item.RecommenderJob) 的作业,并注意到有诸如 startPhase 和 endPhase 之类的选项。我猜这些只是运行管道的一部分,假设您有来自先前运行的必要输入数据。但是我很难理解 RecommenderJob 中有哪些阶段。我正在阅读源代码,但看起来需要一段时间。与此同时,我想知道是否有人可以阐明如何在 RecommenderJob 类中使用这些选项(尤其是 startPhase)?

4

2 回答 2

3

这是我发现的:

阶段 0 是关于 PreparePreferenceMatrixJob 的,它有 3 个 hadoop 作业:

PreparePreferenceMatrixJob-ItemIDIndexMapper-Reducer
PreparePreferenceMatrixJob-ToItemPrefsMapper-Reducer
PreparePreferenceMatrixJob-ToItemVectorsMapper-Reducer

第 1 阶段是关于 RowSimilarityJob 的,它有 3 个工作:

RowSimilarityJob-VectorNormMapper-Reducer
RowSimilarityJob-CooccurrencesMapper-Reducer
RowSimilarityJob-UnsymmetrifyMapper-Reducer

第 2 阶段是关于 RecommenderJob,它有 3 个工作:

RecommenderJob-SimilarityMatrixRowWrapperMapper-Reducer
RecommenderJob-UserVectorSplitterMapper-Reducer
RecommenderJob-Mapper-Reducer

第三阶段是最后一个阶段,它只有一项工作:

RecommenderJob-PartialMultiplyMapper-Reducer

RecommenderJob 类中阶段 1 的输出也与 ItemSimilarityJob 阶段 0 和 1 的输出完全相同(但临时目录名称不同)。

于 2013-01-18T06:17:42.933 回答
1

对,那是正确的。这是一个相当粗糙的机制。实际上,它控制运行一系列 MapReduce 作业中的哪一个。你必须阅读代码才能知道它们是什么,是的。它们因工作而异。

如果我再做一次,我会让它检测到输出的存在以知道跳过这些工作。(这就是我在我的下一代推荐项目中所做的。)

于 2013-01-02T00:41:33.370 回答