java二次排序_java mapreduce二次排序

目的:

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

a 3

a 1

a 100

c 1

b 2

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

a 3

a 1

a 100

b 2

c 1

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

a 1

a 3

a 100

b 2

c 1

创建Maven项目

配置POM文件

我们

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

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

编写构造方法

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

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

编写比较方法

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

编写内容

创建Comparator类,自定义分组

编写代码

创建Partition类,自定义分区类

创建Reduce类

编写内容

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

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

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

准备数据源

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

启动Hadoop

将数据上传到HDFS上

hdfs dfs -mkdir /secondSort

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

hdfs dfs -ls /secondSort/

我们执行我们的jar

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

出现问题:

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值