突然资讯网
首页 >> 科技 >> 正文

java mapreduce二次排序

日期:2019-12-03 14:54:39 来源:互联网 编辑:小优 阅读人数:937

目的:

二次排序就是有下面的数据

如果只按照abc排序就会变成

我们希望是第二列也参与排序

创建Maven项目

java mapreduce二次排序(图1)

配置POM文件

java mapreduce二次排序(图2)

java mapreduce二次排序(图3)

java mapreduce二次排序(图4)

java mapreduce二次排序(图5)

我们

我们自定义Writable类,方便我们序列化

java mapreduce二次排序(图6)

添加属性 代表key-value的两个部分

java mapreduce二次排序(图7)

编写构造方法

java mapreduce二次排序(图8)

编写一个set方法,方便我们使用

java mapreduce二次排序(图9)

编写序列化和反序列化方法

java mapreduce二次排序(图10)

编写比较方法

java mapreduce二次排序(图11)

创建Mapper,注意输出的部分是自己创建的数据类型

java mapreduce二次排序(图12)

编写内容

java mapreduce二次排序(图13)

创建Comparator类,自定义分组

java mapreduce二次排序(图14)

编写代码

java mapreduce二次排序(图15)

创建Partition类,自定义分区类

java mapreduce二次排序(图16)

创建Reduce类

java mapreduce二次排序(图17)

编写内容

java mapreduce二次排序(图18)

创建主类,完成主类的编写

java mapreduce二次排序(图19)

其中自定义部分的类,我们放入到主方法中

自定义分区类和自定义分组类

java mapreduce二次排序(图20)

准备数据源

java mapreduce二次排序(图21)

我们将项目打包上传到Linux上

java mapreduce二次排序(图22)

启动Hadoop

java mapreduce二次排序(图23)

将数据上传到HDFS上

hdfs dfs -mkdir /secondSort

hdfs dfs -put /data/secondSort/data.txt /secondSort/

hdfs dfs -ls /secondSort/

java mapreduce二次排序(图24)

我们执行我们的jar

yarn jar /data/secondSort/secondSort.jar com.xlglvc.xxx.mapredece.secondSort.SecondSortDriver /secondSort/data.txt /secondSortoutput

出现问题:

java mapreduce二次排序(图25)

经过排查,发现是我的数据不是用t隔开的,于是重新处理数据

java mapreduce二次排序(图26)

删除HDFS上的data.txt,将新的data.txt文件上传,重新执行jar文件,我们观看结果

java mapreduce二次排序(图27)

我们查看生成的文件,是按照我们预想的结果完成了二次排序

本文相关词条概念解析:

排序

排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序。若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。内部排序的过程是一个逐步扩大记录的有序序列长度的过程。

网友评论