在这种情况下,我有很多日志。每个日志包含时间、ip、url、内容等。
问题1:我想做的是确定给你一个像“google”这样的词,告诉我哪个日志的内容包含这个词。
问题2:我不能确定我更喜欢哪个词,所以给我完整的倒排索引答案。
所以,我的问题是:对于问题1,如何设计mapper&reducer?
我可以使用mapper来分割日志的内容,mapper的输出是大量的k-v对 <'word', log_id>
. 减速机应该遍历所有这些答案,如果它遇到像 <'google', log_id>
,输出。
我也可以使用mapper来处理整个内容,如果它符合“google”这个词,它会给出 <'google', log_id>
,如果遇到其他词,就跳过。如果Map器不满足特定的词,它将不输出任何内容。在这种情况下,reducer只输出内容,不需要处理。
你能告诉我哪一个更好吗?
1条答案
按热度按时间5sxhfpxr1#
这两个做不同的事情。你的第二个实现适用于问题1,当你有一个确切的词你要找。当您不知道要找的单词时,您的第一个实现适用于问题2。这些问题有不同的解决方案。
如果您只是想解决问题1,那么您的第二个算法将运行良好,运行速度更快。