我有一个场景,我需要为两个不同的语料库运行两个Hadoop
计算n-gram
统计信息的作业,并确保它们将每个 n-gram(以及它的分数)写入同一个 reducer(以便将来我可以在本地读取数据并比较和对比来自两个语料库的两个分数)。例如,如果作业J1
在机器上执行其减速器之一M
并在本地写入 n-gram N
,我希望作业J2
也将 n-gram 写入N
同一台机器M
。
我知道如何计算语料库的 n-gram 统计数据(作为参考,可以参考 Google 的此出版物)。我还定义了我的自定义分区器(基于 n-gram 中的前两个单词获取哈希)。现在我如何确保同一程序的两次不同运行(在两个不同的语料库上)最终将相应的输出写入相同的减速器?