使用 MapReduce 的倒排索引

Inverted Index with MapReduce

我正在尝试针对以下问题实施倒排索引:我得到一个包含 X 数量文件的目录,我需要生成以下格式的输出:

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

例如,我们可以:

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

我实现了一个工作,它适用于每个单独的文档并输出每个单词在每个文档中出现的次数。但是,我对现在应该如何进行以获得所有文件的计数感到困惑。

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

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

按如下操作

地图输出 : key- Word,file name value- count

已分区:仅基于单词

组分区 : 再次仅基于 Word

现在在 recuder 中你会得到像

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

遍历键(我们仅根据组压缩器将键作为单词)狗。并对每个文件进行计数,然后将其添加并进行总计数。