文章目录

  • 零、学习目标
  • 一、导入新课
  • 二、新课讲解
    • (一)案例分析
      • 1、倒排索引介绍
      • 2、案例需求及分析
    • (二)案例实现
      • 1、Map阶段实现
      • 2、Combine阶段实现
      • 3、Reduce阶段实现
      • 4、Driver主类实现
      • 5、效果测试
  • 三、归纳总结
  • 四、上机操作

零、学习目标

  1. 理解倒排索引
  2. 实现倒排索引

一、导入新课

  • 通过上节课的学习,我们对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案例——倒排索引相关推荐

  1. 大数据讲课笔记5.7 MR案例—TopN

    文章目录 零.学习目标 一.导入新课 二.新课讲解 (一)案例分析 1.TopN分析法介绍 2.案例需求及分析 (二)案例实现 1.准备数据文件 (1)在虚拟机上创建文本文件 (2)上传文件到HDFS ...

  2. 物联网大数据平台软件开发架构案例解析

    物联网大数据平台软件开发架构案例解析 有人说物联网是引领信息技术的第三次浪潮. 第一次浪潮是个人电脑的出现,开创了信息时代的第一次革命,此次浪潮成就了微软.IBM等巨头. 第二次浪潮是以信息传输为特征 ...

  3. 星河璀璨 | GBASE南大通用两项成果获评2022大数据“星河”标杆、优秀案例

    12月12日,由中国信息通信研究院.中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)共同组织的第六届大数据"星河(Galaxy)"案例征集结果正式公示.GBASE ...

  4. 机器学习——2(大数据金融风控的预测案例学习总结)

    大数据金融风控的预测案例 1)数据准备 a)离群点处理 总体上先对数据进行了解,做一些简单统计,对连续性数值与字符型数值的处理: 离群点的处理: 首先,离群点的定义:是与其他大多数样本的行为或特征分布 ...

  5. 分享一个 物联网大数据平台软件开发架构案例

    物联网大数据平台软件开发架构案例解析 有人说物联网是引领信息技术的第三次浪潮. 第一次浪潮是个人电脑的出现,开创了信息时代的第一次革命,此次浪潮成就了微软.IBM等巨头. 第二次浪潮是以信息传输为特征 ...

  6. 银行数字化转型导师坚鹏:商业银行大数据风控建模方法与案例

    商业银行大数据风控建模方法与案例 课程背景: 数字化背景下,很多银行存在以下问题: Ø 不清楚商业银行大数据风控建模方法? Ø 不清楚银行大数据风控建模应用案例? Ø 不知道银行大数据风控建模核心内容 ...

  7. 大数据之学习成绩处理案例(一)

    大数据之学习成绩处理案例 来自学了两天python的NewBee-Yunzi的第一个案例总结: 这个案例学习如何处理数据表中的重复值,异常值,空值,空格,根据条件对值进行分级. 有这么个数据表: 学号 ...

  8. 大数据讲课笔记2.3 初探Hadoop世界

    文章目录 零.学习目标 一.导入新课 二.新课讲解 (一)Hadoop的前世今生 1.Google处理大数据三大技术 2.Hadoop如何诞生 3.Hadoop主要发展历程 (二)Hadoop的优势 ...

  9. ❤️让人心跳加速的陌陌案例,大数据必需学会的基础案例!❤️ 【推荐收藏】

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 已列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 陌陌案例 一.陌陌案例的需求说明 二.陌陌案例中表设计内容 1. ...

  10. 大数据高效复制的处理案例分析总结

    一个老客户提出这样的需求,希望将SQLServer中的某个表的数据快速复制到SQLite数据库里面以便进行定期的备份处理,数据表的记录大概有50多万条记录,表有100个字段左右,除了希望能够快速做好外 ...

最新文章

  1. AAAI 2021最佳论文奖出炉
  2. 面试 6:调整数组顺序使奇数位于偶数前面
  3. Centos 7 技巧
  4. 【特征选择】嵌入式特征选择法
  5. boost::coroutine2模块实现相同的边缘的测试程序
  6. 动态折线图 python_python 怎么做个动态折线
  7. C++——异步操作(std::future、std::async、std::packaged_task、std::promise)
  8. 身份令牌toKen Vuex + localStorage结合存储
  9. mvc identity连接mysql_asp.net MVC5,如何使用mysql数据库,使用MVC框架中自带的identity用户验证体系...
  10. python3.8 实现鼠标自动移动_“新生报到”!【移动机器人 HD-1500】负载1500kg,实现了重型货物运输的自动化...
  11. Flutter进阶—质感设计之标签栏
  12. python界面开发webview_Python+Appium学习篇之WebView处理
  13. MySQL优化详解(三)——MySQL慢查询与内参数优化
  14. python-gui-pyqt5的使用方法-3--自定义信号的初识
  15. 计算机控制技术 温钢云,计算机控制课程设计――大纯时延一阶惯性环节温度控制系统.docx...
  16. 路飞学城Python-Day13
  17. python如何期货交易_基于Python的股指期货交易系统
  18. Winform UI界面设计例程——自定义comboBox
  19. 企业号、企业微信、企业邮箱三者融合,IBOS微信生态掘金之路
  20. 《Linux驱动:网络设备驱动》

热门文章

  1. 判断一个数是否是素数
  2. NSOperation
  3. Springboot课设旅游推荐系统
  4. 计算机论文有哪些方向,计算机论文研究方向有以下四类
  5. 计算机论文的研究思路与方法,硕士论文中研究方法怎么写 介绍3种简单的方法...
  6. python断言语句_Python断言处理
  7. 4. gstimxv4l2src.c源码分析
  8. CentOS7安装配置MongoDB4.4.4踩坑
  9. 给定三角形三个顶点的坐标,如何求三角形的外心的坐标呢?
  10. proc sys文件系统对比