当前位置:网站首页 > 技术博客 > 正文

倒排索引 实现



前期准备:

三个文件,file1.txt,file2.txt,file3.txt

内容如下

file1.txt

 
  

file2.txt

 
  

file3.txt

 
  

接下来介绍一下倒排索引的内容:

倒排索引就是根据关键字反过来排查文章,类似于百度搜索关键字然后搜索出来的,都是包含关键字的文章。

带有倒排索引的文件被称为倒排索引文件。

倒排索引案例的实现:

首先是Map阶段的实现:

大概思路是,先生成一个对象用于储存单词还有文档的名称,然后重写map方法,将单词和文件名以键值对的方法进行输出,方便下一阶段Combine的实现。

 
  

Combine阶段的实现,对每个单词进行词频统计,大致思路是,创建一个四有对象,来基本上确定键值对的格式,然后重写reduce放大没见过键值对的格式设置为单词,将键值对的格式改为:文档名称:单词次数。

 
  

reduce阶段的实现

创建一个私有对象,便于存储文档列表,重写reduce方法输出,单词作为键,多个文档名称和词频作为值进行输出。

 
  

接下来是驱动类的实现,讲述输入输出写到文件。

 
  

接下来就是在idea中 对项目进行封装。

在idea的最右侧,有一个m的标志,点一下之后展开项目,之后,点击 Lifecycle也就是生命周期。之后双击下面的package选项,对项目进行封装。

封装完成后

在运行底部就会出现封装信息。

一般是在自己根目录的地方封装成jar包,大家可以自行去项目的根目录查看。

当然在下面的控制台也会输出相应的路径信息,大家可以自行查看。

接下来在hadoop01中的export/data路径下,上传我们封装好的jar包。

首先切换到data目录。

 
  

然后输入rz

进行jar包的上传。

封装好的jar包的位置在你项目目录的target文件下。

上传成功之后就可以进行下一步。

之后就是在hadoop01的虚拟机下,创建Invertedlndex目录,并且在Invertedlndex下创建input目录。

那么接下来介绍两个思路:

第一个,在终端的地方使用命令进行创建:

(请确保一下自己是管理员权限)

 
  

创建完成后,切换到这个目录

 
  

然后!输入rz

进行文件的上传。

第二个:

打开自己的9870端口,然后手动创建一个,创建文件的图标是create绿色按钮旁边的那个小文件夹图标。多打了个i,已改正。

就创建好了,如果过程顺利请进行下一步,

如果不顺利,出现了类似于下面这种信息的报错,可能是大家之前的虚拟机出现了问题,大家进行了一个恢复快照的操作。

这会导致图形化界面和自己虚拟机的日志信息不一致,会弹出风险提示,

 
  

那么解决的方法是,大家回到hadoop01的终端,输入

 
  

可以强行退出hadoop的安全模式,就可以继续对文件夹进行操作了。

回归正题,

在创建完文件夹之后,再创建input文件夹,选择文件上传到刚刚创建的文件夹。

创建完成之后

大家请cd到data文件夹、

 
  

之后输入下面的命令:

 
  

接下来给大家详细的介绍一下这个命令的组成。

//

首先,开头的hadoop jar不必理会,是固定格式,

后面的 HadoopDemo-1.0-SNAPSHOT.jar,这个是大家打包的名字,可以根据实际情况来进行替换。

再下面的cn.itcast.invertedlndex.InvertedlndexDriver ,是我们上传项目的InvertedlndexDriver 类的包里的路径,也可以根据自己的实际情况进行修改。

/Invertedlndex/input是我们自己新建的文件夹,确保文件输入的路径。

/Invertedlndex/output不用自己创建,由系统自己输出的路径,可以在这个地方查看结果。

以上就是这个命令的全部组成,大家可以根据自己的情况进行修改和调整。

///

如果出现报错,不要慌张,也许是你的jar包没有上传成功,也许是你的名称拼写或者包名什么的有错误,也或许是你的文件名错误,路径错误,谢姐决定成败。

大家可以倒回去仔细检查一下这些问题。

如果上传成功了还没有成功还嗷嗷的报错的话。

重启你的虚拟机,然后

 
  

这个命令是使hadoop退出安全模式,可以解决自己回复快照问题,前面解释过,这里不再进行赘述。

之后,虔诚的回到桌面刷新一下,虔诚一些,默念我一定会成功的,拜托了!

再次输入,之后就可以等待好消息了。

下面依旧是对输出结果进行展示~

有问题可以在评论区留言,看到的话会回复,喜欢的话,给个点赞支持一下~谢谢各位

版权声明


相关文章:

  • 计算机系统的组成概述2025-07-28 18:30:03
  • 红警键盘快捷键大全图片2025-07-28 18:30:03
  • linux怎样查看版本信息2025-07-28 18:30:03
  • java线程池的原理和实现2025-07-28 18:30:03
  • okHttp下载并安装2025-07-28 18:30:03
  • 迭代器的实现原理2025-07-28 18:30:03
  • 01背包 完全背包 多重背包2025-07-28 18:30:03
  • 正品蓝导航最收录最全2025-07-28 18:30:03
  • springboot整合swagger2接口文档2025-07-28 18:30:03
  • 一句话木马phpinfo2025-07-28 18:30:03