千家信息网

MapReduce中怎么实现排序和分组

发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,今天就跟大家聊聊有关MapReduce中怎么实现排序和分组,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Map 起始阶段在Map阶段,使用 j
千家信息网最后更新 2025年02月07日MapReduce中怎么实现排序和分组

今天就跟大家聊聊有关MapReduce中怎么实现排序和分组,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

Map 起始阶段

在Map阶段,使用 job.setInputFormatClass() 定义的 InputFormat ,将输入的数据集分割成小数据块 split,同时 InputFormat 提供一个 RecordReader的实现。本课程中使用的是 TextInputFormat,它提供的 RecordReader 会将文本的行号作为 Key,这一行的文本作为 Value。这就是自定义 Mapper 的输入是 < LongWritable,Text> 的原因。 然后调用自定义 Mapper 的map方法,将一个个< LongWritable,Text>键值对输入给 Mapper 的 map方法。

Map 最后阶段

在 Map 阶段的最后,会先调用 job.setPartitionerClass() 对这个 Mapper 的输出结果进行分区,每个分区映射到一个Reducer。每个分区内又调用 job.setSortComparatorClass() 设置的 Key 比较函数类排序。 可以看到,这本身就是一个二次排序。如果没有通过 job.setSortComparatorClass() 设置 Key 比较函数类,则使用 Key 实现的 compareTo() 方法。我们既可以使用 IntPair 实现的 compareTo() 方法,也可以专门定义 Key 比较函数类。

Reduce 阶段

在 Reduce 阶段,reduce() 方法接受所有映射到这个 Reduce 的 map 输出后,也是会调用 job.setSortComparatorClass()方法设置的 Key 比较函数类,对所有数据进行排序。然后开始构造一个 Key 对应的 Value 迭代器。 这时就要用到分组,使用 job.setGroupingComparatorClass()方法设置分组函数类。只要这个比较器比较的两个 Key 相同,它们就属于同一组,它们的 Value 放在一个 Value 迭代器,而这个迭代器的 Key 使用属于同一个组的所有Key的第一个Key。最后就是进入 Reducer 的 reduce() 方法,reduce() 方法的输入是所有的 Key 和它的 Value 迭代器,同样注意输入与输出的类型必须与自定义的 Reducer 中声明的一致。

job.setPartitionerClass() 和job.setGroupingComparatorClass()的关系

reduce方法每次是读一条记录,读到相应的key,但是处理value集合时,处理完当前记录的values后,还会判断下一条记录是不是和当前的key是不是同一个组,如果是的话,会继续读取这些记录的值,而这个记录也会被认为已经处理了,直到记录不是当前组,这次reduce调用才结束,这样一次reduce调用就会处理掉一个组中的所有记录,而不仅仅是一条了。这个有什么用呢?如果不用分组,那么同一组的记录就要在多次reduce方法中独立处理,那么有些状态数据就要传递了,就会增加复杂度,在一次调用中处理的话,这些状态只要用方法内的变量就可以的。比如查找最大值,只要读第一个值就可以了。

看完上述内容,你们对MapReduce中怎么实现排序和分组有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

方法 阶段 处理 分组 排序 函数 输入 数据 迭代 内容 就是 输出 文本 状态 复杂 最大 相同 一致 一行 不仅仅 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 威海荣成乳山文登软件开发 搜索框和数据库怎么连接 有关网络安全教育的题目 成都摩羯座互联网科技 carsim如何复制数据库 网络安全管理课程体系 战争雷霆服务器连接丢失 cdn主服务器连接异常 西安市学电脑软件开发的学校 武警网管员网络安全防护训练教案 网络安全技术应用 中职教材 哔哩哔哩公共服务器解析名 广州吉赫互联网科技有限公司 hmcl怎么查自己服务器ip soap开票服务器系统下载 呈贡软件开发公司 md5怎么验证数据库密码 微博网络安全应急演练方案 58和瑞庭网络技术 网络安全高峰论坛 重要性 有关网络安全教育的题目 蚂蚁数据库是什么公司 北京服务器阵列卡虚拟主机 2018湖南网络安全宣传 与数据库交互的软件 青少年触犯网络安全法的案例 使用国外服务器的公司 现在网络安全用什么语言 北京理工大学查重数据库 国家网络安全宣传提出了四招
0