1. 程式人生 > 實用技巧 >WritableComparable排序案例實操(區內排序)

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

大資料培訓