首页技术文章正文

Hadoop怎样实现二次排序?

更新时间:2021-05-26 来源:黑马程序员 浏览量:

1577370495235_学IT就到黑马程序员.gif


问题分析

即对key和value双排序。默认情况下,Map输出的结果会对Key进行默认的排序,但是有时候需要对Key排序的同时还需要对Value进行排序,这时候就要用到二次排序了。

核心答案讲解

有两种方法进行二次排序,分别为:buffer and in memory sort和 value-to-key conversion。
buffer and in memory sort
主要思想是:在reduce()函数中,将某个key对应的所有value保存到内存中,然后进行排序。 这种方法最大的缺点是:可能会造成out of memory。

value-to-key conversion
主要思想是:将key和部分value拼接成一个组合key(实现WritableComparable接口或者调用 setSortComparatorClass函数),这样reduce获取的结果便是先按key排序,后按value排序的结果,需要注意的是,用户需 要自己实现Paritioner,以便只按照key进行数据划分。Hadoop显式的支持二次排序,在Configuration类中有个 setGroupingComparatorClass()方法,可用于设置排序被group的key值。

问题扩展

MapReduce:写Mapreduce进行数据处理,需要利用java、python等语言进行开发调试,如果没有一项技术(如 Java)基础,几乎不可能学会 MapReduce。

Hive:Hive 构建于传统的数据库和数据仓库理念之上。它对待数据的方式就像是它有一个基于 SQL 或基于架构的结构。Apache Hive提供了一种更具体和更高级的语言,通过运行Hadoop作业来查询数据,而不是直接编写脚本来逐步操作Hadoop上的几个MapReduce作业。Hive的初步设计思路在于提供与SQL类似的使用体验,开发人员只需要掌握Sql相关的知识就可以使用。


项目应用

在大数据的复杂统计分析中,可以使用Hive的SQL功能来实现排序等不同的算法,降低入门难度,提高研发效率。








猜你喜欢:

Hadoop生态体系有哪些子系统?

Hadoop实现join的几种方法【大数据开发面试】?

Hadoop与Spark的区别有哪些?【大数据培训】

Hadoop集群如何通过UI界面实现管理和查看

黑马程序员Python+大数据开发培训

分享到:
在线咨询 我要报名
和我们在线交谈!