2013-01-02 200 views
1

我运行一些RecommenderJob(org.apache.mahout.cf.taste.hadoop.item.RecommenderJob)基于从亨利马乌0.7工作,并注意有像startPhase和endPhase选项。我猜测这些只是运行管道的一部分,假设你有来自之前运行的必要输入数据。但我很难理解RecommenderJob中的哪些阶段。我正在阅读源代码,但看起来需要一段时间。在此期间,我想知道是否有人可以通过RecommenderJob类了解如何使用这些选项(特别是startPhase)?如何使用startPhase在亨利马乌

回答

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的输出完全一样,从相位0和ItemSimilarityJob的1输出(但临时目录名称不同)。

1

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

如果我做了一遍又一遍,我会只是做它检测输出的存在就知道跳过作业。 (这是我在我的下一代推荐项目已经做到了。)

相关问题