我正在从Mahout 0.7运行一些RecommenderJob(org.apache.mahout.cf.taste.hadoop.item.RecommenderJob)作业,并注意到有一些选项,如startPhase和endPhase。我猜这些只是运行部分管道,假设你有来自先前运行的必要输入数据。但是我很难理解RecommenderJob中有哪些阶段。我正在阅读源代码,但看起来需要一段时间。与此同时,我想知道是否有人能够阐明如何使用这些选项(特别是startPhase)和RecommenderJob类?
答案 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作业。你必须阅读代码才能知道它们是什么,是的。他们因工作而异。
如果我再次完成它,我会让它检测到输出的存在,以便知道跳过这些工作。 (这就是我在下一代推荐项目中所做的。)