如何利用Hadoop查找包含指定单词列表的所有文档?
Hadoop 实现多关键词文档交集的通用流程
Map 阶段
- 每个Map任务负责处理一批文档,无需将全量数据加载到单节点内存
- 对每个文档,提取其中包含的目标关键词(即用于求交集的关键词集合)
- 对每个命中的关键词,输出
(关键词, 文档名)键值对;若文档未命中任何目标关键词,直接丢弃该文档数据
Shuffle 阶段(Hadoop 自动处理)
- Hadoop会自动将所有相同关键词对应的文档名汇总到同一个Reduce任务中
- 可在Map端添加去重逻辑(如使用Combiner),避免同一文档因多次命中同一关键词重复传输,降低网络开销
Reduce 阶段
- 拿到每个关键词对应的去重文档列表后,核心是统计每个文档在所有关键词集合中的出现次数:
- 初始化哈希表,键为文档名,值为出现次数
- 遍历所有关键词的文档列表,每遇到一个文档名,就将对应计数加1
- 最后筛选出计数等于目标关键词总数的文档名——这些就是同时出现在所有关键词文档集合中的结果,即所需的交集
补充说明
单台机器是将所有文档集合加载到内存中做交集运算,而Hadoop是把计算拆分到多个节点并行处理,每个节点仅处理部分数据,适合超大规模文档场景,不会因内存不足出现瓶颈。
内容的提问来源于stack exchange,提问作者notaorb
相关产品推荐
相关产品推荐

