使用MapReduce的反向索引

时间:2017-11-10 13:05:06

标签: java hadoop mapreduce

我正在尝试为以下问题实现倒排索引:我给了一个包含X个文件的目录,我需要生成以下格式的输出:

word : totalCount : [ (file_name, file_count) (file_name, file_count) ...]

例如,我们可以:

dog : 200 : [(file1, 30) (file2, 43) ....]

我实现了一个适用于每个单独文档的作业,并输出每个文档中每个单词出现的次数。但是,我很困惑我现在应该如何处理才能获得所有文件的计数。

如果我有一个包含10个文档的目录,并且我的输入是目录本身的路径,那么如何为每个文档执行10个作业?另外,如何设置从10个单独作业中获取输出的作业?我知道如何实现reducer的逻辑,但我不知道如何设置作业配置本身以确保它的工作原理。

1 个答案:

答案 0 :(得分:1)

这可以在单个map-reduce作业中完成。将所有输入路径传递给map-reduce作业。

按如下方式进行。

地图输出:键 - 字,文件名值 - 计数

分区:仅基于单词

群组分区:同样基于Word

现在在救命中,你会得到像

这样的输入
Dog,file1,1
Dog,file1,1
Dog,file2,1
Dog,file2,1 

遍历密钥(我们已经将密钥作为仅基于组压缩程序的密钥)狗。并对每个文件进行计数,然后将其添加并计算总数。