MapReduce排序之 二次排序

一:背景

Hadoop中虽然有自动排序和分组,由于自带的排序是按照Key进行排序的,有些时候,我们希望同时对Key和Value进行排序。自带的排序功能就无法满足我们了,还好Hadoop提供了一些组件可以让开发人员进行二次排序。


二:技术实现

我们先来看案例需求

#需求1: 首先按照第一列数字升序排列,当第一列数字相同时,第二列数字也升序排列(列之间用制表符\t隔开)

3	3
3	2
3	1
2	2
2	1
1	1
MapReduce计算之后的结果应该是:

1	1
2	1
2	2
3	1
3	2
3	3

#需求2:第一列不相等时,第一列按降序排列,当第一列相等时,第二列按升序排列

3	3
3	2
3	1
2	2
2	1
1	1
MapReduce计算之后的结果应该是:
3	1
3	2
3	3
2	1
2	2
1	1


下面是实现代码,实现两种需求的关键是compareTo()方法的实现不同:

public class SecondSortTest {

	// 定义输入路径
		private static final String INPUT_PATH = "hdfs://liaozhongmin:9000/data";
		// 定义输出路径
		private static final String OUT_PATH = "hdfs://liaozhongmin:9000/out";

		public static void main(String[] args) {

			try {
				// 创建配置信息
				Configuration conf = new Configuration();
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值