尚硅谷大数据技术之Hadoop(MapReduce)(新)第2章 Hadoop序列化

3.3.6 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);


上一篇:
下一篇:
关于尚硅谷
教育理念
名师团队
学员心声
资源下载
视频下载
资料下载
工具下载
加入我们
招聘岗位
岗位介绍
招贤纳师
联系我们
电话:010-56253825
邮箱:info@atguigu.com
地址:北京市昌平区宏福科技园综合楼6层(北京校区)

 深圳市宝安区西部硅谷大厦B座C区一层(深圳校区)

上海市松江区谷阳北路166号大江商厦6层(上海校区)