我有一个场景,我需要运行两个Hadoop
作业来计算两个不同语料库的n-gram
统计信息,并确保它们将每个n-gram(及其得分)写入相同的reducer(以便将来我可以在本地读取数据并比较和对比两个语料库的两个分数)。例如如果作业J1
在机器M
上执行其缩减程序之一并在本地写入n-gram N
,我希望作业J2
也将n-gram N
写入同一机器M
。
我知道如何计算语料库的n-gram统计信息(仅供引用,可以引用Google的this发布)。我还定义了自定义分区程序(基于n-gram中的前两个单词进行哈希处理)。现在,如何确保同一程序的两个不同运行(在两个不同的语料库上)最终将相同的输出写入相同的reducer?
最佳答案
checkout MultipleInputs。通过将两个同级映射器指向同级数据集,可以避免在缩减之前对组合集运行ID映射。
关于hadoop - 将两个不同的Hadoop作业的输出写入同一组reducer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19239936/