【问题标题】:how to use startPhase in Mahout如何在 Mahout 中使用 startPhase
【发布时间】:2013-01-02 00:28:49
【问题描述】:
我正在从 Mahout 0.7 运行一些基于 RecommenderJob (org.apache.mahout.cf.taste.hadoop.item.RecommenderJob) 的作业,并注意到有 startPhase 和 endPhase 等选项。我猜这些只是运行管道的一部分,假设您有来自先前运行的必要输入数据。但是我很难理解 RecommenderJob 中有哪些阶段。我正在阅读源代码,但看起来需要一段时间。与此同时,我想知道是否有人可以阐明如何在 RecommenderJob 类中使用这些选项(尤其是 startPhase)?
【问题讨论】:
标签:
mahout
mahout-recommender
【解决方案1】:
这是我发现的:
阶段 0 是关于 PreparePreferenceMatrixJob 的,它有 3 个 hadoop 作业:
PreparePreferenceMatrixJob-ItemIDIndexMapper-Reducer
PreparePreferenceMatrixJob-ToItemPrefsMapper-Reducer
PreparePreferenceMatrixJob-ToItemVectorsMapper-Reducer
第一阶段是关于 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 的输出完全相同(但临时目录名称不同)。
【解决方案2】:
是的,没错。这是一个相当粗糙的机制。实际上,它控制运行一系列 MapReduce 作业中的哪一个。你必须阅读代码才能知道它们是什么,是的。它们因工作而异。
如果我再做一次,我会让它检测到输出的存在以知道跳过工作。 (这就是我在我的下一代推荐项目中所做的。)