hadoop按照上行流量进行排序

MapReduce实战:统计手机号耗费的总上行流量和下行流量 1.需求: 统计每一个手机号耗费的总上行流量、下行流量、总流量 2.数据准备: 输入数据格式: 时间戳、电话号码、基站的物理地址、访问网址的ip、网站域名、数据包、接包数、上行/传流量、下行/载流量、响应码 最终输出的数据格式: 手机号码 上行流量 下行流量 总流量 3.分析: 基本思路: (1)Map阶段: (a)读取一行数据,切分字段 (b)抽取手机号、上行流量... 阅读详情
package demo05.flowOrder;

import demo04.flow.FlowNum;
import org.apache.hadoop.io.WritableComparable;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;

/**
 * 排序和序列化要实现WritableComparable这个接口,重写compareTo和write,readFields方法
 * 在输出的时候hadoop会按顺序输出字节流
 */
public class FlowBean implements WritableComparable<FlowNum> {
    private Integer upFlow;
    private Integer downFlow;
    private Integer upCountFlow;
    private Integer downCountFlow;

    @Override
    public int compareTo(FlowNum o) {
        return this.upFlow > o.getUpFlow()?-1:1;
    }

    @Override
    public void write(DataOutput dataOutput) throws IOException {
        dataOutput.writeInt(upFlow);
        dataOutput.writeInt(downFlow);
        dataOutput.writeInt(upCountFlow);
        dataOutput.writeInt(downCountFlow);
    }

    @Override
    public void readFields(DataInput dataInput) throws IOException {
        this.upFlow = dataInput.readInt();
        this.downFlow = dataInput.readInt();
        this.upCountFlow = dataInput.readInt();
        this.downCountFlow = dataInput.readInt();
    }

    @Override
    public String toString() {
        return this.upFlow+"\t"+this.downFlow+"\t"+this.upCountFlow+"\t"+this.downCountFlow;
    }

    public Integer getUpFlow() {
        return upFlow;
    }

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

    public Integer getDownFlow() {
        return downFlow;
    }

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

    public Integer getUpCountFlow() {
        return upCountFlow;
    }

    public void setUpCountFlow(Integer upCountFlow) {
        this.upCountFlow = upCountFlow;
    }

    public Integer getDownCountFlow() {
        return downCountFlow;
    }

    public void setDownCountFlow(Integer downCountFlow) {
        this.downCountFlow = downCountFlow;
    }


}

package demo05.flowOrder;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

public class FlowOrderMap extends Mapper<LongWritable, Text, FlowBean,Text> {
    @Override
    protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, FlowBean, Text>.Context context) throws IOException, InterruptedException {
        //分割数据
        String[] strings = value.toString().split("\t");
        //获取上行流量,下行流量,上行总流量,下行总流量
        FlowBean flowBean = new FlowBean();
        flowBean.setUpFlow(Integer.parseInt(strings[1]));
        flowBean.setDownFlow(Integer.parseInt(strings[2]));
        flowBean.setUpCountFlow(Integer.parseInt(strings[3]));
        flowBean.setDownCountFlow(Integer.parseInt(strings[4]));

        context.write(flowBean,new Text(strings[0]));
    }
}

package demo05.flowOrder;

import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

public class FlowOrderReduce extends Reducer<FlowBean, Text,FlowBean,Text> {
    @Override
    protected void reduce(FlowBean key, Iterable<Text> values, Reducer<FlowBean, Text, FlowBean, Text>.Context context) throws IOException, InterruptedException {
        //这个地方输出字节流,hadoop会自己根据compareTo排序后输出
        context.write(key,values.iterator().next());
    }
}
Hadoop的计算上下行流量的案例 问题:统计每一用户的(手机号)所消耗的总的上行流量,下行流量,总流量 思路:1.建立mapper,reducer,job           2.与之间的worcount的区别在于,输出的结果不是一个,而是多个,所以需要我们将需要输出的数据封装到一个类中 1.建立mapper,reducer,job(将三者放在一个类中或者分开写) package cn.lsm.bigdata. 阅读详情

相关推荐

手机流量分析——Hadoop实现

统计每个手机号上行流量和、下行流量和、总流量和(上行流量和+下行流量和),并且:将统计结果按照手机号的前缀进行区分,并输出到不同的输出文件中去。在该目录下使用hadoop调用该包,通过数据源文件,求出每个手机号的总上行流量、下行流量、总流量。(2) 根据(1)的手机号流量汇总结果再按照题目要求将不同的手机号进行分组输出到不同的文件中。(1) 通过数据源文件,首先求出每个手机号的总上行流量、下行流量、总流量。根据(1)的手机号流量汇总结果再按照不同的手机号进行分组输出到不同的文件中。

m0_70276855的博客 1346

Hadoop:MapReduce编程之流量分析

要求1:统计每个手机号的上行数据包总和,下行数据包总和,上行流量总和,下行流量总和 要求2:基于1的结果,按照上行总流量将结果降序排序 要求3:基于需求1的结果:将134开头的写入1个分区,135开头的写入另外一个分区,其他的写入另外一个分区

Xiao Miao的博客 1144

统计每一个用户(手机号)所耗费的总上行流量、下行流量,总流量以及根据总流量倒序排序(二)

    中心思想是mapper处理数据,写给reduce时。以bean作为key,实现WritableComparable&lt;FlowBean&gt;接口,对传入的     bean进行compareTo比较,写出去的bean就是有序的.package cn.itcast.bigdata.mr.flowsum;import java.io.IOException;import org.apac...

peng_0129的博客 2468

MapReduce面向对象实操2——统计手机号的上行流量、下行流量、总流量

大数据相关博客的目录 数据集 以TAB为分隔符 第一列:序号 第二列:手机号 第三列:网络IP 第四列:访问的域名 第五列:上行流量 第六列:下行流量 第七列:HTTP状态码 1 13736230513 192.196.100.1 www.atguigu.com 2481 24681 200 2 13846544121 192.196.100.2 ...

weixin_46192593的博客 1095

hadoop之MapReduce上网流量统计(1)

需求一:统计求和 统计每个手机号的上行流量总和,下行流量总和,上行总流量之和,下行总流量之和 FlowBean: import org.apache.hadoop.io.Writable; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; /** * 这里暂时不需要做排序,...

winnertakeall的博客 664

MapReduce实战:将统计结果按照总流量倒序排序(全排序)

1.需求: 根据需求1产生的结果再次对总流量进行排序 2.数据准备: 3.分析 (1)把程序分两步走,第一步正常统计总流量,第二步再把结果进行排序 (2)context.write(总流量,手机号) (3)FlowBean实现WritableComparable接口重写compareTo方法 @Override public int compareTo(FlowBean o) { // 倒...

Movle 1559

Hadoop案例:WritableComparable实现分区内排序

排序是maprduce的重要部分,这里将利用继承WritableComparable实现自定义排序。

小M呀~之大数据系列 2047

大数据之-Hadoop3.x_MapReduce_区内排序案例---大数据之hadoop3.x工作笔记0117

然后我们继续看,上一节,我们用二次排序,对,按照总流量倒序的基础上,如果总流量一样,我们 按照上行流量的升序又排序了一下,然后,这一次我们又有了新的需求,我们希望, 我们136开头的,放到一个分区文件中去,137开头的,放到一个文件中去,138开头的手机号,放到一个 分区文件中去,139的放到一个分区文件中去,然后其他的开头的,放到一个分区文件中去,这样怎么弄? 并且我们要求,每个结果文件的,内部都是有序的对吧. 我们去实现一下,首先我们去新建一个包, partitionerandw..

添柴程序猿的专栏 796

Hadoop学习--流量分区并排序

准备文件 列名: 手机号码 上行流量 下行流量 总流量 实验内容 统计给定文件中,每一个手机号耗费的总上行流量、下行流量、总流量,手机号136、137、138、139开头都分别放到一个独立的4个文件中,其他开头的放到一个文件中,并按照流量倒序排列 程序思路 每个类的作用 一、 FlowBean实体类 1. 实现Hadoop的Writable接口,并用来实现序列化及反序列化的bean对象 2. 用于存放我们感兴趣的数据(手机号,流量等) 3. 实现WritableComparable接口,用于

qq_43906881的博客 1555

基于Flink的风控系统

可以使用Flink-Stream进行实时数据流的检测和处理,或者使用Flink-Kafka集群进行数据转发和存储,然后使用Flink-Table进行数据表的查询和分析。在Flink中,可以使用Flink-Stream进行数据流的处理,或者使用Flink-Kafka进行Kafka数据流的消费和处理。Flink的运行时本身也支持迭代算法的执行。可以使用Flink-Stream进行实时数据流的检测和处理,或者使用Flink-Kafka集群进行数据转发和存储,然后使用Flink-Table进行数据表的查询和分析。

m0_68231587的博客 1875

高通AI Engine SDK(QNN)使用教程(环境配置、模型转换、量化、推理、分析)

高通AI Engine使用教程

weixin_51031772的博客 1万+

mr compare

package com.qq.bd; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import java.io.I

qq_38250124的博客 374

对称加密和非对称加密,数字签名和证书

在对称加密中,任何人都可以使用公钥进行加密。在数字签名中,任何人都可以使用公钥验证签名。数字签名,其实就是将非对称加密反过来使用。公钥私钥非对称加密发送者加密时使用接收者解密时使用数字签名验证者验证签名时使用签名者生成签名时使用谁持有密钥?只要有需要,任何人都可以持有个人持有既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密。公钥负责加密,私钥负责解密。既然是签名,那肯定是不希望有人冒充我发消息,所以只有我才能签名。私钥负责签名,公钥负责验签。

m0_70432049的博客 1409

MapReduce框架原理(二)

1、WritableComparable 排序 1.1、WritableComparable排序demo 1.1.1、需求 要求每个省份手机号输出的文件中按照总流量内部排序。增加自定义分区类,分区按照省份手机号设置。 13470253144 180 180 360 13509468723 7335 110349 117684 13560439638 918 4938 5856 13568436656 3597 25635 29232 13590439668 1116 954 2070 13630577

prefect_start的博客 1324

手把手教你用vLLM在昇腾910B上部署Qwen3-Embedding-8B模型(保姆级避坑指南)

本文详细介绍了如何在昇腾910B芯片上使用vLLM推理引擎部署Qwen3-Embedding-8B模型的全流程,包括环境准备、vLLM-ascend定制化安装、模型获取与校验、环境变量配置、服务启动参数优化、性能压测及生产级部署建议。特别针对昇腾生态的开发者,提供了保姆级的避坑指南和实用技巧,帮助实现高效稳定的模型部署。

weixin_28726671的博客 463

基于Simulink的异步电机参数在线辨识与自适应控制仿真

本文基于Simulink平台,详细介绍了异步电机参数在线辨识与自适应控制系统的仿真实现。针对异步电机运行中参数时变问题,采用模型参考自适应系统(MRAS)实时辨识转子电阻和互感,并结合自适应PI控制策略动态调整控制器参数。通过搭建完整的矢量控制(FOC)仿真模型,验证了系统在稳态辨识、参数摄动和动态响应等工况下的性能:参数辨识误差<1.2%,转速跟踪误差<20rpm,动态响应时间<10ms。文章还提供了详细的Simulink建模步骤、核心代码实现及性能分析,为高级电机控制系统的设计与优化提

amy_mhd的博客 72

Hadoop-mapreduce案例-统计手机上行流量,下行流量,总流量

日志格式如下图,需要的字段,第二列:手机号(用户),倒数第三列:上行流量,倒数第二列:下行流行 思路: 将上行流量,下行流量,总流量封装成一个对象bean,map中context.write(手机号,bean),reduce中对每个用户的流量进行统计。 MapReduce中传输自定义数据类型Bean: (1) 要在Hadoop的各个节点之间传输,就必须实现其序列化机制,实现 Writa...

weixin_42782897的博客 3251

SLAM Cartographer(18)后端优化问题求解器

了解经过闭环检测构建了子图与节点之间的约束之后,通过后端优化求解器进行优化求解。核心是基于Ceres库进行SPA(Sparse Pose Adjustment)的优化方法,把后端优化问题描述成为一个最小二乘的问题求解

氢键H-H 5680

统计手机号耗费的总上行流量、下行流量、总流量(序列化)

自定义排序1.需求:2.数据准备:3.分析:4.代码实现:(1)FlowBean类:(2)MapWritable类:(3)ReduceWritable类:(4)MainWritable类:5.运行结果: ———————— —————————— —————————— —————————— —————————— 1.需求: 将统计结果按照总流量倒序...

weixin_43520450的博客 3447

Python爬虫实战:利用Playwright与异步技术高效抓取链家十万级二手房数据

在开始编写代码之前,我们首先需要为项目选择合适的技术栈。1. 传统方案:Requests + BeautifulSoup优点: 简单、轻量、学习成本低。直接发送HTTP请求获取HTML,然后解析。缺点: 对于大量由JavaScript动态渲染的内容无能为力。现代网站(包括链家)大量使用JS来加载数据和实现交互,简单的HTTP请求无法获取到完整的页面内容。此外,容易被基于IP或请求头特征的反爬机制拦截。2. 进阶方案:Selenium优点。

2201_76125261的博客 891

10|Git Diff 与增量代码识别:本次到底改了哪些代码?

本文介绍 Git Diff 和增量代码识别,帮助你理解精准测试如何先找到本次真正变化的代码。测试开发工程师。Java 后端开发工程师。质量平台 / DevOps 平台建设者。想了解精准测试落地方法的技术负责人。

专注 AI 精准测试平台实战落地,分享从代码 Diff 到回归决策的完整工程闭环。主张“先建数据链路,再上 AI 智能”,让测试从“靠经验”走向“基于风险”。 160

MapReduce——流量汇总程序案例(统计每一个手机号耗费的总上行流量、下行流量、总流量)

一、准备 (1)windows可以连接hadoop集群 (2)配置hadoop和jdk的环境变量 (3)一份要处理的数据xxx.txt 二、分析 基本思路: Map阶段: (1)读取一行数据,切分字段 (2)抽取手机号、上行流量、下行流量 (3)以手机号为key,bean对象为value输出,即context.write(手机号,bean); Reduce阶段: (1)累加上...

晓风岚月 3193

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

大数据---15.Mapreduce案例之---统计手机号耗费的总上行流量、下行流量、总流量

MapReduce的封装对象的例子

u014579001的博客 7799

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

(全排序)将统计结果按照总流量倒序排序

1.需求: 根据上一篇博文统计手机号耗费的总上行流量、下行流量、总流量(序列化)产生的结果再次对总流量进行排序。 2.数据准备: 上一篇博文产生的数据: 13480253104 180 180 360 13502468823 7335 110349 117684 13560436666 3597 25635 29232 13560439658 2034 5892 7926 13602846565 ...

weixin_43520450的博客 1241

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Mapreduce案例之---统计手机号耗费的总上行流量、下行流量、总流量

1.需求: 统计每一个手机号耗费的总上行流量、下行流量、总流量 2.数据准备: 2.1 输入数据格式: 时间戳、电话号码、基站的物理地址、访问网址的ip、网站域名、数据包、接包数、上行/传流量、下行/载流量、响应码 2.2 最终输出的数据格式: 手机号码 上行流量 下行流量 总流量 3.基本思路: 3.1 Map阶段: (1) 读取一行数据,转换为字符串类型 (2) 切分字段 (3) 抽取手机号、上行流量、下行流量 (4)以手机号为k...

zaishijizhidian的博客 1470

大数据-经典案例上行流量倒序排序(递减排序)

需求二: 上行流量倒序排序(递减排序) 分析,以需求一的输出数据作为排序的输入数据,自定义FlowBean,以FlowBean为map输 出的key,以手机号作为Map输出的value,因为MapReduce程序会对Map阶段输出的key 进行排序 Step 1: 定义FlowBean实现WritableComparable实现比较排序 Java 的 compareTo 方法说明: compar...

逍遥云恋 761
上一篇: hadoop二次排序,自定义计数器
下一篇: hadoop分区
RZH_long
博客等级 码龄6年 17粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值