WritableComparable排序案例实操(区内排序)

1.需求

要求每个省份手机号输出的文件中按照总流量内部排序。

2.需求分析

基于前一个需求,增加自定义分区类,分区按照省份手机号设置。

3.案例实操

(1)增加自定义分区类

package com.atguigu.mapreduce.sort;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Partitioner;

public class ProvincePartitioner extends Partitioner<FlowBean, Text> {

@Override

public int getPartition(FlowBean key, Text value, int numPartitions) {

// 1 获取手机号码前三位

String preNum = value.toString().substring(0, 3);

int partition = 4;

// 2 根据手机号归属地设置分区

if (“136”.equals(preNum)) {

partition = 0;

}else if (“137”.equals(preNum)) {

partition = 1;

}else if (“138”.equals(preNum)) {

partition = 2;

}else if (“139”.equals(preNum)) {

partition = 3;

}

return partition;

}

}

(2)在驱动类中添加分区类

// 加载自定义分区类

job.setPartitionerClass(ProvincePartitioner.class);

// 设置Reducetask个数

job.setNumReduceTasks(5);

大数据培训

猜你喜欢

转载自blog.csdn.net/msjhw_com/article/details/109215385