如何设计一个特殊的MapReduce反向索引



在这种情况下,我有很多日志。每个日志包含时间、ip、url、内容等。

问题1:我想做的是确定给你一个特定的单词,比如"谷歌",告诉我哪个日志的内容包含这个词

问题2:我不能确定我更喜欢哪个词,所以给我整个倒排索引的答案。

所以,我的问题是:对于问题1,如何设计映射器&减速器?

  • 我可以使用mapper来分割日志的内容,mapper的输出是大量的k-v对<'word', log_id>。reducer应该遍历所有这些答案,如果遇到像<'google', log_id>这样的对,则输出它
  • 我也可以使用mapper来处理整个内容,如果它遇到单词"谷歌",它会给出<'google', log_id>的输出,如果它碰到其他单词,就跳过。如果映射器不符合特定的单词,则不输出任何内容。在这种情况下,减速器只是输出,不需要工作通过

你能告诉我哪一个更好吗?

这两者做的事情不同。您的第二个实现适用于问题1,当您有一个确切的单词时。当您不知道要查找的单词时,您的第一个实现适用于问题2。这些是不同的问题,有不同的解决方案。

如果你只是想解决问题1,那么你的第二个算法会工作得很好,工作得更快。

相关内容

  • 没有找到相关文章

最新更新