大数据讲课笔记5.5 MR案例——倒排索引
文章目录
- 零、学习目标
- 一、导入新课
- 二、新课讲解
- (一)案例分析
- 1、倒排索引介绍
- 2、案例需求及分析
- (二)案例实现
- 1、Map阶段实现
- 2、Combine阶段实现
- 3、Reduce阶段实现
- 4、Driver主类实现
- 5、效果测试
- 三、归纳总结
- 四、上机操作
零、学习目标
- 理解倒排索引
- 实现倒排索引
一、导入新课
- 通过上节课的学习,我们对MapReduce运行模式和性能优化策略有了一定的认识。本节课将针对MapReduce经典案例——倒排索引进行详细讲解。
二、新课讲解
(一)案例分析
1、倒排索引介绍
- 倒排索引是文档检索系统中最常用的数据结构,被广泛应用于全文搜索引擎。倒排索引主要用来存储某个单词(或词组)在一组文档中的存储位置的映射,提供了可以根据内容来查找文档的方式,而不是根据文档来确定内容,因此称为倒排索引(Inverted Index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(Inverted File)。
2、案例需求及分析
- 现假设有三个源文件file1.txt、file2.txt和file3.txt,需要使用倒排索引的方式对这三个源文件内容实现倒排索引,并将最后的倒排索引文件输出。
- 首先,使用默认的TextInputFormat类对每个输入文件进行处理,得到文本中每行的偏移量及其内容。Map过程首先分析输入的<key,value>键值对,经过处理可以得到倒排索引中需要的三个信息:单词、文档名称和词频。
- 经过Map阶段数据转换后,同一个文档中相同的单词会出现多个的情况,而单纯依靠后续Reduce阶段无法同时完成词频统计和生成文档列表,所以必须增加一个Combine阶段,先完成每一个文档的词频统计。
- 经过上述两个阶段的处理后,Reduce阶段只需将所有文件中相同key值的value值进行统计,并组合成倒排索引文件所需的格式即可。
(二)案例实现
1、Map阶段实现
- 首先,使用IntelliJ开发工具创建Maven项目InvertedIndex,并且新创建
net.hw.mr
包,在该路径下编写自定义Mapper类InvertedIndexMapper,主要用于将文本中的单词按照空格进行切割,并以冒号拼接,“单词:文档名称”作为key,单词次数作为value,都以文本方式输出至Combine阶段。
2、Combine阶段实现
- 根据Map阶段的输出结果形式,在`net.hw.mr``包下,自定义实现Combine阶段的类InvertedIndexCombiner,对每个文档的单词进行词频统计。
3、Reduce阶段实现
- 根据Combine阶段的输出结果形式,同样在
net.hw.mr
包下,自定义Reducer类InvertedIndexMapper,主要用于接收Combine阶段输出的数据,并最终案例倒排索引文件需求的样式,将单词作为key,多个文档名称和词频连接作为value,输出到目标目录。
4、Driver主类实现
- 编写MapReduce程序运行主类InvertedIndexDriver,主要用于设置MapReduce工作任务的相关参数,由于本次演示的数据量较小,为了方便、快速进行案例演示,本案例采用了本地运行模式,指定的本地
D:\\InvertedIndex\\input
目录下的源文件(需要提前准备)实现倒排索引,并将结果输入到本地D:\\InvertedIndex\\output
目录下。
5、效果测试
- 为了保证MapReduce程序正常执行,需要先在本地
D:\\InvertedIndex\\input
目录下创建file1.txt、file2.txt和file3.txt;然后执行MapReduce程序的程序入口InvertedIndexDriver类,正常执行完成后,会在指定的D:\\InvertedIndex\\output
下生成结果文件。
三、归纳总结
- 回顾本节课所讲的内容,并通过提问的方式引导学生解答问题并给予指导。
四、上机操作
- 形式:单独完成
- 题目:实现倒排索引
- 要求:让学生自己按照步骤实现倒排索引的功能,以此来巩固本节的学习内容。写一篇CSDN博客,记录操作过程。
大数据讲课笔记5.5 MR案例——倒排索引相关推荐
- 大数据讲课笔记5.7 MR案例—TopN
文章目录 零.学习目标 一.导入新课 二.新课讲解 (一)案例分析 1.TopN分析法介绍 2.案例需求及分析 (二)案例实现 1.准备数据文件 (1)在虚拟机上创建文本文件 (2)上传文件到HDFS ...
- 物联网大数据平台软件开发架构案例解析
物联网大数据平台软件开发架构案例解析 有人说物联网是引领信息技术的第三次浪潮. 第一次浪潮是个人电脑的出现,开创了信息时代的第一次革命,此次浪潮成就了微软.IBM等巨头. 第二次浪潮是以信息传输为特征 ...
- 星河璀璨 | GBASE南大通用两项成果获评2022大数据“星河”标杆、优秀案例
12月12日,由中国信息通信研究院.中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)共同组织的第六届大数据"星河(Galaxy)"案例征集结果正式公示.GBASE ...
- 机器学习——2(大数据金融风控的预测案例学习总结)
大数据金融风控的预测案例 1)数据准备 a)离群点处理 总体上先对数据进行了解,做一些简单统计,对连续性数值与字符型数值的处理: 离群点的处理: 首先,离群点的定义:是与其他大多数样本的行为或特征分布 ...
- 分享一个 物联网大数据平台软件开发架构案例
物联网大数据平台软件开发架构案例解析 有人说物联网是引领信息技术的第三次浪潮. 第一次浪潮是个人电脑的出现,开创了信息时代的第一次革命,此次浪潮成就了微软.IBM等巨头. 第二次浪潮是以信息传输为特征 ...
- 银行数字化转型导师坚鹏:商业银行大数据风控建模方法与案例
商业银行大数据风控建模方法与案例 课程背景: 数字化背景下,很多银行存在以下问题: Ø 不清楚商业银行大数据风控建模方法? Ø 不清楚银行大数据风控建模应用案例? Ø 不知道银行大数据风控建模核心内容 ...
- 大数据之学习成绩处理案例(一)
大数据之学习成绩处理案例 来自学了两天python的NewBee-Yunzi的第一个案例总结: 这个案例学习如何处理数据表中的重复值,异常值,空值,空格,根据条件对值进行分级. 有这么个数据表: 学号 ...
- 大数据讲课笔记2.3 初探Hadoop世界
文章目录 零.学习目标 一.导入新课 二.新课讲解 (一)Hadoop的前世今生 1.Google处理大数据三大技术 2.Hadoop如何诞生 3.Hadoop主要发展历程 (二)Hadoop的优势 ...
- ❤️让人心跳加速的陌陌案例,大数据必需学会的基础案例!❤️ 【推荐收藏】
全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 已列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 陌陌案例 一.陌陌案例的需求说明 二.陌陌案例中表设计内容 1. ...
- 大数据高效复制的处理案例分析总结
一个老客户提出这样的需求,希望将SQLServer中的某个表的数据快速复制到SQLite数据库里面以便进行定期的备份处理,数据表的记录大概有50多万条记录,表有100个字段左右,除了希望能够快速做好外 ...
最新文章
- AAAI 2021最佳论文奖出炉
- 面试 6:调整数组顺序使奇数位于偶数前面
- Centos 7 技巧
- 【特征选择】嵌入式特征选择法
- boost::coroutine2模块实现相同的边缘的测试程序
- 动态折线图 python_python 怎么做个动态折线
- C++——异步操作(std::future、std::async、std::packaged_task、std::promise)
- 身份令牌toKen Vuex + localStorage结合存储
- mvc identity连接mysql_asp.net MVC5,如何使用mysql数据库,使用MVC框架中自带的identity用户验证体系...
- python3.8 实现鼠标自动移动_“新生报到”!【移动机器人 HD-1500】负载1500kg,实现了重型货物运输的自动化...
- Flutter进阶—质感设计之标签栏
- python界面开发webview_Python+Appium学习篇之WebView处理
- MySQL优化详解(三)——MySQL慢查询与内参数优化
- python-gui-pyqt5的使用方法-3--自定义信号的初识
- 计算机控制技术 温钢云,计算机控制课程设计――大纯时延一阶惯性环节温度控制系统.docx...
- 路飞学城Python-Day13
- python如何期货交易_基于Python的股指期货交易系统
- Winform UI界面设计例程——自定义comboBox
- 企业号、企业微信、企业邮箱三者融合,IBOS微信生态掘金之路
- 《Linux驱动:网络设备驱动》