我无法弄清楚ChainMapper(map - > map - > map - > reduce)和ChainReducer(reduce - > map - > map - > map)的用例是什么到通常的链式任务(map - > reduce - > map - > reduce)。是否存在使用其中任何一个的规范示例或杀手级应用程序?或者,是否有一些众所周知的系统/应用程序使用其中任何一个?
答案 0 :(得分:4)
我认为它们适合那些在作业管道中使用IdentityMapper或IdentityReducer的步骤很少的情况。
考虑到这一点,您在给定的管道中有2个工作步骤:
现在,Step1使用IdentityReducer。因此,步骤1的输出将写入磁盘,然后由Step2选择。为简化此过程,ChainMapper有助于消除此复制到磁盘并在Step2的映射器中读取。
因此,Step1可以成为第一个映射器M1,Step2的映射器可以成为第二个映射器M2。 所以它现在看起来像[M1 - > M2 - > R2]。
现在,就实际例子而言,有一个非常常见的用例,其中一个需要过滤掉记录然后进入处理过程。您可能会争辩说,为什么我们不能同时在同一个映射器中进行处理和过滤,我会说因为两个原因:
1 - 关注点分离
2 - 如果您已准备好管道,并且只需要为其添加预处理步骤,那么Chain Mapper会派上用场。