【MapReduce】扩展案例 ---- TopN(求取数据集前N名)_topn maprreduce

本文介绍了一个MapReduce实现TopN的案例,通过解析数据集,计算每条记录的上行流量(upFlow)、下行流量(downFlow)和总流量(sumFlow),并利用TreeMap在Mapper和Reducer中维护排名前10的数据。Mapper阶段对输入数据进行预处理,Reducer阶段则聚合数据并保持TopN的结果。最后通过TopNDriver类配置并提交Job进行运行。
摘要由CSDN通过智能技术生成

* set\get
*
* @return
*/
public long getUpFlow() {
return upFlow;
}

public void setUpFlow(long upFlow) {
    this.upFlow = upFlow;
}

public long getDownFlow() {
    return downFlow;
}

public void setDownFlow(long downFlow) {
    this.downFlow = downFlow;
}

public long getSumFlow() {
    return sumFlow;
}

public void setSumFlow(long sumFlow) {
    this.sumFlow = sumFlow;
}

public void set(long upFlow1, long downFlow1) {
    upFlow = upFlow1;
    downFlow = downFlow1;
    sumFlow = upFlow+downFlow;
}

}


[**返回顶部**](#0)




---


#### ② Mapper 阶段


* **定义TreeMap集合**
* **读取数据、拆分、封装Bean对象**
* **以Bean对象为key,号码为value键值对存入TreeMap集合,按照自定义排序进行排序**
* **存入同时判断集合大小,以达到提取前n名的效果**
* **遍历集合写出到Reducer端**



package 第七章_MR扩展案例.TopN;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import java.io.IOException;
import java.util.Iterator;
import java.util.TreeMap;

public class TopNMapper extends Mapper<LongWritable, Text, TopNBean, Text> {

// 1.定义一个treeMap作为存储数据的容器(自动按照key排序)
private TreeMap<TopNBean, Text> treeMap = new TreeMap<>();
TopNBean k;
Text v = new Text();
@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {

// 13470253144 180 180 360
// 13509468723 7335 110349 117684
k = new TopNBean();
// 1.读取一行数据
String line = value.toString();
// 2.拆分
String[] fields = line.split(“\t”);
// 3.封装Beand

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值