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