如何设计一个特殊的MapReduce倒排索引?

时间:2015-11-17 18:46:45

标签: java hadoop mapreduce bigdata

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

如果您只是希望解决问题1,那么您的第二个算法将正常工作并且工作更快。