用hadoop实现倒排索引简单实例

用hadoop实现倒排索引简单实例

倒排索引是文档搜索系统中常用的数据结构,即根据内容进行文档的搜索,本次我们利用mapReduce来分析和统计单词在每个文档中的权重,输入2个单词的txt文本,经过mapreduce的处理,将结果以{单词 1.txt:权重,2.txt:权重}逐行输出到output目录下。切记单个文件不要超过HDFS单个块的大小,保证一个文件一个split.否则会出现词频统计不完全。也可以重新实现一个inputFomart类。将每一个文件划分成一个split。
下面简单的讲解下这个程序,InvertedMapper类继承自Mapper类,重写了它的map方法,也可以实现Mapper接口,这个我们以后再说。map方法以{key:value}={单词:文档,1}的形式存于输出到context中。在InvertedCombine中把中间结果进行合并,减少网络传输,加快执行速度。
这里combine还完成了一个操作,就是将key,value的形式,变为了{单词,文档:权重},由于这里采用的是mapreduce默认的Hashpartitioner处理的,因此也保证了单词名相同的记录会被分配到同一个reducer中进行处理。后期可以重新指定partitionerClass,即使key不同,也可同样合并到一个reduce中处理。
具体代码如下
“`package com.ly.study.hadoop;

import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值