| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> MapReduce之输出结果排序 -> 正文阅读 |
|
[大数据]MapReduce之输出结果排序 |
/**
*/ public class Flow implements WritableComparable { // 上下流量 private long upFlow; // 下行流量 private long downFlow; // 总流量 private long sumFlow; /**
*/ @Override public int compareTo(Flow o) { // TODO Auto-generated method stub return -(int)(this.sumFlow - o.getSumFlow()); } 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 Flow(long upFlow, long downFlow) { super(); this.upFlow = upFlow; this.downFlow = downFlow; this.sumFlow = upFlow + downFlow; } /**
*/ public Flow() { super(); } /**
*/ @Override public void write(DataOutput out) throws IOException { // TODO Auto-generated method stub out.writeLong(upFlow); out.writeLong(downFlow); out.writeLong(sumFlow); } @Override public String toString() { return upFlow + “\t” + downFlow + “\t” + sumFlow; } /**
*/ @Override public void readFields(DataInput in) throws IOException { // TODO Auto-generated method stub upFlow = in.readLong(); downFlow = in.readLong(); sumFlow = in.readLong(); } public long getSumFlow() { return sumFlow; } public void setSumFlow(long sumFlow) { this.sumFlow = sumFlow; } } public class FlowCountMap extends Mapper<LongWritable, Text, Flow, Text> { @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { // 将一行数据转换为String String line = value.toString(); // 切分字段 String[] fields = line.split("\t"); // 取出手机号 String phoneNum = fields[0]; // 取出上行流量下行流量 long upFlow = Long.parseLong(fields[fields.length - 3]); long downFlow = Long.parseLong(fields[fields.length - 2]); Flow flow = new Flow(upFlow, downFlow); context.write(flow, new Text(phoneNum)); } } public class FlowCountReducer extends Reducer<Flow, Text, Text, Flow>{ @Override protected void reduce(Flow flow, Iterable
throws IOException, InterruptedException { String phone = values.iterator().next().toString(); // 输出结果 context.write(new Text(phone), flow); } } public static void main(String[] args) throws Exception { Configuration conf = new Configuration(true); conf.set(“mapreduce.framework.name”, “local”); // 输出到HDFS文件系统中 // conf.set(“fs.defaultFS”, “hdfs://hadoop-node01:9000”); // 输出到本地文件系统 conf.set(“fs.defaultFS”, “file:///”); Job job = Job.getInstance(conf); |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 11:46:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |