如何在Mahout中使用startPhase

时间:2013-01-02 00:28:49

标签: mahout mahout-recommender

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

2 个答案:

答案 0 :(得分: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

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

RecommenderJob-PartialMultiplyMapper-Reducer

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

答案 1 :(得分:1)

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

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