当前位置: 首页 > news >正文

HADOOP——序列化

1.创建一个data目录在主目录下,并且在data目录下新建log.txt文件

2.新建flow软件包,在example软件包下

FlowBean

package com.example.flow;import org.apache.hadoop.io.Writable;import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;//hadoop序列化
//三个属性:手机号。上行流量,下行流量
public class FlowBean implements Writable {private String phone;private long upFlow;private long downFlow;public FlowBean(String phone, long upFlow, long downFlow) {this.phone = phone;this.upFlow = upFlow;this.downFlow = downFlow;}//定义setter和get方法public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public long getUpFlow() {return upFlow;}public void setUpFlow(long upFlow) {this.upFlow = upFlow;}public void setDownFlow(long downFlow) {this.downFlow = downFlow;}//定义无参构造public FlowBean() {}//定义一个获取总量的方法public long getSumFlow(){return upFlow+downFlow;}@Overridepublic void write(DataOutput dataOutput) throws IOException {dataOutput.writeUTF(phone);dataOutput.writeLong(upFlow);dataOutput.writeLong(downFlow);}@Overridepublic void readFields(DataInput dataInput) throws IOException {phone = dataInput.readUTF();upFlow = dataInput.readLong();downFlow = dataInput.readLong();}public long getDownFlow() {return downFlow;}
}

FlowDriver

package com.example.flow;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.io.IOException;public class FlowDriver {public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException, IOException {Configuration conf = new Configuration();Job job = Job.getInstance(conf);job.setJarByClass(FlowDriver.class);job.setMapperClass(FlowMapper.class);job.setReducerClass(FlowReducer.class);job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(FlowBean.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(Text.class);FileInputFormat.setInputPaths(job, new Path("data"));FileOutputFormat.setOutputPath(job, new Path("output"));boolean result = job.waitForCompletion(true);System.exit(result ? 0 : 1);}
}

FlowMapper

package com.example.flow;import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;import java.io.IOException;//1.继承Mapper
//2.重写map函数
public class FlowMapper extends Mapper<LongWritable, Text, Text, FlowBean> {@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {System.out.println(value);//1.获取一行数据.使用空格拆分//手机号就是第一个元素//上行流量就是第二个元素//下行流量就是第三个元素String[] split = value.toString().split("\\s+");String phone = split[0];long upFlow = Long.parseLong(split[1]);long downFlow = Long.parseLong(split[2]);//封装对象FlowBean flowBean = new FlowBean(phone,upFlow, downFlow);//写入手机号为key,值就是这个对象context.write(new Text(phone),flowBean);}
}

FlowReducer

package com.example.flow;import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;//1.继承Reducer
//2.重写reducer
public class FlowReducer extends Reducer<Text,FlowBean,Text,Text> {@Overrideprotected void reduce(Text key, Iterable<FlowBean> values, Context context) throws IOException, InterruptedException {//1.遍历集合,取出每一个元素,计算上行流量和下行流量的总和long upFlowSum = 0L;long downFlowSum = 0L;for (FlowBean flowBean : values) {upFlowSum += flowBean.getUpFlow();downFlowSum += flowBean.getDownFlow();}//2.计算总的汇总long sumFlow = upFlowSum + downFlowSum;String flowBean = String.format("总的上行流量是: %d,总的下行流量是:%d,总的流量是:%d",upFlowSum,downFlowSum,sumFlow);context.write(key,new Text(flowBean));}
}

相关文章:

HADOOP——序列化

1.创建一个data目录在主目录下&#xff0c;并且在data目录下新建log.txt文件 2.新建flow软件包&#xff0c;在example软件包下 FlowBean package com.example.flow;import org.apache.hadoop.io.Writable;import java.io.DataInput; import java.io.DataOutput; import java.i…...

第五章 5.2ESP32物联网应用:HTTP与Web服务器详细教学

本文将详细讲解如何在ESP32上搭建Web服务器&#xff0c;通过HTTP协议实现远程控制LED灯。每行代码均有详细注释&#xff0c;适合零基础学习。 一、HTTP协议基础 HTTP是客户端&#xff08;浏览器&#xff09;和服务器之间的通信协议&#xff0c;常用请求方法&#xff1a; GET&a…...

c++11 绑定器bind

文章目录 std::bind 使用总结&#xff08;C11&#xff09;1. 绑定普通函数2. 使用占位符 _1, _2&#xff0c;调用时传参数3. 绑定类的成员函数&#xff08;类外&#xff09;4. 绑定类的成员函数&#xff08;类内&#xff09;5. 占位符结合成员函数小结 std::bind 使用总结&…...

实现时间最优轨迹生成/轨迹规划方法(TOTG),不使用moveit,可用于ROS驱动机械臂FollowJointTrajectoryGoal()

前言 在我的这篇文章&#xff1a;https://blog.csdn.net/weixin_45702459/article/details/139293391?spm1011.2415.3001.5331中&#xff0c;写了不使用moveit来ros驱动机械臂的方法&#xff0c;也就是用FollowJointTrajectoryGoal()来进行一系列点的关节运动&#xff0c;其实…...

2025年推荐使用的开源大语言模型top20:核心特性、选择指标和开源优势

李升伟 编译 随着人工智能技术的持续发展&#xff0c;开源大型语言模型&#xff08;LLMs&#xff09;正变得愈发强大&#xff0c;使最先进的AI能力得以普及。到2025年&#xff0c;开源生态系统中涌现出多个关键模型&#xff0c;它们在各类应用场景中展现出独特优势。 大型语言…...

高并发多级缓存架构实现思路

目录 1.整体架构 3.安装环境 1.1 使用docket安装redis 1.2 配置redis缓存链接&#xff1a; 1.3 使用redisTemplate实现 1.4 缓存注解优化 1.4.1 常用缓存注解简绍 1.4.2 EnableCaching注解的使用 1.4.3使用Cacheable 1.4.4CachePut注解的使用 1.4.5 优化 2.安装Ngin…...

Qt 的 事件队列

Qt 的 事件队列 是其核心事件处理机制之一&#xff0c;用于管理和分发系统与用户生成的事件&#xff08;如鼠标点击、键盘输入、定时器、信号槽中的队列连接等&#xff09;。理解 Qt 的事件队列对多线程、界面响应以及异步处理尤为关键。 一、Qt 的事件处理模型概览 Qt 是基于…...

html-css样式

1. 所有类型为文本的 元素的样式 指定所有类型为文本的 元素的样式 /* 文本框的样式 */ input[type"text"] { font-size: 25px;width: 80px; /* 文本框的宽度 */ padding: 25px; } font-size&#xff1a;字体大小 width&#xff1a;文本框宽度 padding&#…...

Qemu-STM32(十五):STM32F103加入Flash控制器

概述 本文主要描述了在Qemu平台中&#xff0c;如何添加STM32F103的Flash控制器模拟代码。 参考资料 STM32F1XX TRM手册&#xff0c;手册编号&#xff1a;RM0008 添加步骤 1、在hw/arm/Kconfig文件中添加STM32F1XX_FLASH&#xff0c;如下所示: 号部分为新增加内容 diff -…...

设计模式(责任链模式)

责任链模式 模板模式、策略模式和责任链模式&#xff0c;这三种模式具有相同的作用&#xff1a;复用和扩展&#xff0c;在实际的项目开发中比较常用&#xff0c;特别是框架开发中&#xff0c;我们可以利用它们来提供框架的扩展点&#xff0c;能够让框架的使用者在不修改框架源…...

【Mac-ML-DL】深度学习使用MPS出现内存泄露(leaked semaphore)以及张量转换错误

MPS加速修改总结 先说设备&#xff1a;MacBook Pro M4 24GB 事情的起因是我在进行深度学习的时候想尝试用苹果自带的MPS进行训练加速&#xff0c;修改设备后准备开始训练&#xff0c;但是出现如下报错&#xff1a; UserWarning: resource_tracker: There appear to be 1 leak…...

Hadoop集群部署教程-P5

Hadoop集群部署教程-P5 Hadoop集群部署教程&#xff08;续&#xff09; 第十七章&#xff1a;安全增强配置 17.1 认证与授权 Kerberos认证集成&#xff1a; # 生成keytab文件 kadmin -q "addprinc -randkey hdfs/masterEXAMPLE.COM" kadmin -q "xst -k hdfs.…...

Github 2FA(Two-Factor Authentication/两因素认证)

Github 2FA认证 多因素用户认证(Multi-Factor Authentication)&#xff0c;基本上各个大互联网平台&#xff0c;尤其是云平台厂商&#xff08;如&#xff1a;阿里云的MFA、华为云、腾讯云/QQ安全中心等&#xff09;都有启用了&#xff0c;Github算是搞得比较晚些了。 双因素身…...

Spark大数据分析与实战笔记(第四章 Spark SQL结构化数据文件处理-05)

文章目录 每日一句正能量第4章 Spark SQL结构化数据文件处理章节概要4.5 Spark SQL操作数据源4.5.1 Spark SQL操作MySQL4.5.2 操作Hive数据集 每日一句正能量 努力学习&#xff0c;勤奋工作&#xff0c;让青春更加光彩。 第4章 Spark SQL结构化数据文件处理 章节概要 在很多情…...

使用 Azure AKS 保护 Kubernetes 部署的综合指南

企业不断寻求增强其软件开发和部署流程的方法。DevOps 一直是这一转型的基石&#xff0c;弥合了开发与运营之间的差距。然而&#xff0c;随着安全威胁日益复杂&#xff0c;将安全性集成到 DevOps 流水线&#xff08;通常称为 DevSecOps&#xff09;已变得势在必行。本指南深入探…...

遵守 Vue3 的单向数据流原则:父组件传递对象 + 子组件修改对象属性,安全地实现父子组件之间复杂对象的双向绑定示例代码及讲解

以下是针对 父组件传递对象 子组件修改对象属性 的完整示例代码&#xff0c;同时遵守 Vue3 的单向数据流原则&#xff1a; 1. 父组件代码 (ParentComponent.vue) vue <template><!-- 通过 v-model 传递整个对象 --><ChildComponent v-model"formData&qu…...

Unchained 内容全面上链,携手 Walrus 迈入去中心化媒体新时代

加密新闻媒体 Unchained — — 业内最受信赖的声音之一 — — 现已选择 Walrus 作为其去中心化存储解决方案&#xff0c;正式将其所有媒体内容&#xff08;文章、播客和视频&#xff09;上链存储。Walrus 将替代 Unchained 现有的中心化存储架构&#xff0c;接管其全部历史内容…...

20.3 使用技巧2

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的 20.3.3 修改表头单元格 设置列表头单元格的内容&#xff1a; 一是可以通过 DataGridView.Columns[列号].HeaderCell来获得对应列的单…...

【Axure绘制原型】小图标使用技巧

获取小图标的网站&#xff1a;https://www.iconfont.cn/ 搜索相关图标 点击下载-复制SVG代码 回到Axure软件中粘贴&#xff0c;此时会显示出图片 在Axure软件中右键-变换图片-转换为形状 即可...

音视频之H.265/HEVC预测编码

H.265/HEVC系列文章&#xff1a; 1、音视频之H.265/HEVC编码框架及编码视频格式 2、音视频之H.265码流分析及解析 3、音视频之H.265/HEVC预测编码 预测编码是视频编码中的核心技术之一。对于视频信号来说&#xff0c;一幅图像内邻近像素之间有着较强的空间相关性,相邻图像之…...

无人机遥感与传统卫星遥感:谁更适合你的需求?

在对地观测领域&#xff0c;无人机遥感和卫星遥感是两种重要的技术手段&#xff0c;各自具有独特的技术原理、性能特点和应用优势。本文将从技术原理、性能特点和应用场景三个方面&#xff0c;对无人机遥感和卫星遥感进行系统对比&#xff0c;帮助读者全面了解两种技术的差异与…...

学习笔记—C++—模板初阶

目录 模板初阶 泛型编程 函数模板 模版概念 函数模版格式 模版的原理 函数模板的实例化 模版参数的匹配规则 类模板 模板初阶 泛型编程 使用函数重载虽然可以实现&#xff0c;但是有一下几个不好的地方&#xff1a; 1. 重载的函数仅仅是类型不同&#xff0c;代码复…...

【Python进阶】字典:高效键值存储的十大核心应用

目录 前言&#xff1a;技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块技术选型对比 二、实战演示环境配置要求核心代码实现&#xff08;10个案例&#xff09;案例1&#xff1a;基础操作案例2&#xff1a;字典推导式…...

充电宝项目中集成地图地址解析功能梳理

文章目录 MongoDB数据库引入pom依赖配置yaml配置文件参考POJOXLocationRepositoryservice服务方法 腾讯地图接口申请api key配置api key启动类配置RestTemplate控制层服务层 MongoDB数据库 MongoDB对应经纬度的查询具体很好的支持. 引入pom依赖 <dependency><group…...

算法基础(以acwing讲述顺序为主,结合自己理解,持续更新中...)

文章目录 算法的定义一、基础算法排序二分高精度前缀和与差分双指针算法位运算离散化区间合并 算法的定义 这是我从百度上面搜的定义 算法&#xff08;Algorithm&#xff09;是指解题方案的准确而完整的描述&#xff0c;是一系列解决问题的清晰指令&#xff0c;算法代表着用系…...

栈实现队列

栈实现队列 用栈实现队列&#xff1a;C 语言代码解析栈的基本实现栈的初始化栈的销毁入栈操作检查栈是否为空出栈操作获取栈顶元素获取栈中元素个数 用栈实现队列队列的创建入队操作出队操作获取队首元素检查队列是否为空队列的销毁 总结 用栈实现队列&#xff1a;C 语言代码解…...

Redis原理与Windows环境部署实战指南:助力测试工程师优化Celery调试

引言 在分布式系统测试中&#xff0c;Celery作为异步任务队列常被用于模拟高并发场景。而Redis作为其核心消息代理&#xff0c;其性能和稳定性直接影响测试结果。本文将深入解析Redis的核心原理&#xff0c;主要讲解Windows环境部署redis&#xff0c;为测试工程师提供一套完整…...

HWDeviceDRM的三个子类,HWPeripheralDRM HWTVDRM HWVirtualDRM

在很多采用 DRM 架构的 Android 平台&#xff08;尤其是 QTI 平台&#xff0c;比如 sdm / display-hal 模块中&#xff09;&#xff0c;HWDeviceDRM 是一个基类&#xff0c;抽象了所有类型的 Display 输出设备的共通 DRM 行为&#xff0c;而它有三个常见的子类&#xff0c;对应…...

金融 IC 卡 CCRC 认证:从合规到业务安全的升级路径

在金融科技飞速发展的当下&#xff0c;金融 IC 卡作为现代金融交易的重要载体&#xff0c;广泛应用于各类支付场景&#xff0c;从日常的购物消费到线上金融理财&#xff0c;其安全性直接关系到用户的资金安全和金融机构的稳定运营。CCRC&#xff08;中国网络安全审查技术与认证…...

微硕WSP6949 MOS管在强排热水器中的应用与市场分析

微硕WSP6949 MOS管在强排热水器中的应用与市场分析 一、引言 强排热水器作为一种常见的家用电器&#xff0c;其核心部件之一是驱动电路&#xff0c;而MOS管作为驱动电路中的关键元件&#xff0c;其性能直接影响到热水器的运行效率和稳定性。微硕半导体推出的WSP6949 MOS管&am…...

文件操作(二进制文件)

C中对文件操作需要包含头文件 #include<fstream> 文件类型分为两类&#xff1a; 1. 文本文件&#xff1a;文件以文本对应的 ASCII 码形式存储在计算机中 2. 二进制文件&#xff1a;文件以文本的二进制形式存储在计算机中&#xff0c;用户一 般不能直接读懂 文件…...

ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(输入类外设之按键Button)

ESP-ADF外设子系统深度解析&#xff1a;esp_peripherals组件架构与核心设计&#xff08;输入类外设之按键Button&#xff09; 版本信息: ESP-ADF v2.7-65-gcf908721 简介 本文档详细分析ESP-ADF中的输入类外设实现机制&#xff0c;包括按键(button)、触摸(touch)和ADC按键(a…...

HOW - 企业团队自建 npm 仓库

文章目录 一、明确需求二、选型:常用方案三、Verdaccio 搭建步骤1. 安装 Node.js 环境2. 全局安装 verdaccio3. 启动服务4. 配置(可选)5. 用户登录与发布四、团队使用方式1. 使用 `.npmrc` 文件统一配置2. 发布范围包(Scoped packages)五、权限控制六、进阶集成七、测试和…...

键值对和Map的区别

数组里存储键值对和使用Map&#xff08;在不同语言里也被叫做字典、哈希表等&#xff09;存在多方面的区别&#xff0c;下面从多个维度进行分析&#xff0c;同时给出C#和C的代码示例。 区别分析 1. 查找效率 数组存储键值对&#xff1a;查找特定键的值时&#xff0c;通常需要…...

CS61A:STRING REPRESENTATION

Python 规定所有对象都应该产生两种不同的字符串表示形式&#xff1a;一种是人类可解释的文本&#xff0c;另一种是 Python 可解释的表达式。字符串的构造函数 str 返回一个人类可读的字符串。在可能的情况下&#xff0c;repr 函数会返回一个计算结果相等的 Python 表达式。rep…...

AI编程新纪元:GitHub Copilot、CodeGeeX与VS2022的联合开发实践

引言:AI编程时代的到来 在软件开发领域,我们正站在一个历史性的转折点上。GitHub Copilot、CodeGeeX等AI编程助手的出现,结合Visual Studio 2022的强大功能,正在重塑代码编写的本质。这不仅是工具层面的革新,更是开发范式的根本转变。能够有效利用这些AI工具的开发者将跨…...

iOS崩溃堆栈分析

文章目录 一、背景二、获取崩溃日志三、使用 dSYM 文件符号化堆栈信息1. 准备 dSYM 文件2. 符号化方法使用 Xcode使用 atos 命令 一、背景 在 iOS 开发中&#xff0c;分析崩溃日志和堆栈信息是调试的重要环节。上线APP往往只能获取到堆栈信息无法获取到具体的崩溃日志&#xf…...

kafka服务端和springboot中使用

kafka服务端和springboot中使用 一、kafka-sever安装使用 下载kafka-server https://kafka.apache.org/downloads.html 启动zookeeper zookeeper-server-start.bat config\zookeeper.properties 启动kafka-server kafka-server-start.bat config\server.properties创建主…...

05-DevOps-Jenkins自动拉取构建代码

新建Gitlab仓库 先在Gitab上创建一个代码仓库&#xff0c;选择创建空白项目 安装说明进行填写&#xff0c;然后点击创建项目 创建好的仓库是空的&#xff0c;什么都没有 新建一个springboot项目&#xff0c;用于代码上传使用。 只是为了测试代码上传功能&#xff0c;所以代码…...

win7/win10/macos如何切换DNS,提升网络稳定性

本篇教程教您如何在Windows10、Windows8.1、Windows7、MacOS操作系统切换DNS&#xff0c;以提升系统的稳定性&#xff0c;获得更好的操作体验。 Windows10及Windows8.1 1、右键单击“此计算机”&#xff0c;然后选择“属性”。进入Windows系统界面后&#xff0c;选择左侧的“…...

【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——A35M33异核通信测试

1&#xff09;实验平台&#xff1a;正点原子ATK-DLMP257B开发板 2&#xff09;浏览产品&#xff1a;https://www.alientek.com/Product_Details/135.html 3&#xff09;全套实验源码手册视频下载&#xff1a;正点原子资料下载中心 第四章 ATK-DLMP257B功能测试——A35&M33…...

maven如何解决jar包依赖冲突

maven如何解决jar包依赖冲突 1.背景2.报错信息3.解决思路3.1.查找jsqlparser冲突3.2.发现冲突3.2.解决冲突 4.Dromara Warm-Flow 1.背景 在ruoyi-vue项目集成Warm-Flow过程中&#xff0c;需要把mybatis升级为mybatis-plus&#xff0c;按照Warm-Flow常见问题中升级过程&#xf…...

过往记录系列 篇六:国家队护盘历史规律梳理

文章目录 系列文章护盘触发条件与时间规律护盘信号识别特征市场反应规律退出策略历史演变系列文章 过往记录系列 篇一:牛市板块轮动顺序梳理 过往记录系列 篇二:新年1月份(至春节前)行情历史梳理 过往记录系列 篇三:春节行情历史梳理 过往记录系列 篇四:年报月行情历史梳…...

string的模拟实现 (6)

目录 1.string.h 2.string.cpp 3.test.cpp 4.一些注意点 本篇博客就学习下如何模拟实现简易版的string类&#xff0c;学好string类后面学习其他容器也会更轻松些。 代码实现如下&#xff1a; 1.string.h #define _CRT_SECURE_NO_WARNINGS 1 #pragma once #include <…...

多模态思维链AI医疗编程:从计算可持续性到开放域推理的系统性解决方案

多模态思维链AI医疗编程:从计算可持续性到开放域推理的系统性解决方案 医疗AI领域的多模态思维链技术正在重塑临床决策支持、医学影像分析和医疗流程优化的范式。本指南从计算可持续性、错误传播控制、伦理安全防护和通用性扩展四大维度,系统解析医疗大模型落地落地的关键要…...

BTS7960 直流电机控制程序

/*************正转逻辑*****************/ LEN1 REN1 while() { LPWN0 DELAY LPWM1 DELAY } /************反转逻辑******************/ LEN1 REN1 while() { RPWN0 DELAY RPWM1 DELAY } /******************************/ /***2025 测试直流电机正反转past…...

vue3 uniapp vite 配置之定义指令

动态引入指令 // src/directives/index.js import trim from ./trim;const directives {trim, };export default {install(app) {console.log([✔] 自定义指令插件 install 触发了&#xff01;);Object.entries(directives).forEach(([key, directive]) > {app.directive(…...

Mysql-JDBC

JDBCUtils public class JDBCUtils {/*** 工具类的构造方法一般写成私有*/private JDBCUtils(){}//静态代码块再类加载的时候执行&#xff0c;且执行一次static{try {Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {e.printStackT…...

如何在爬虫中合理使用海外代理?在爬虫中合理使用海外ip

我们都知道&#xff0c;爬虫工作就是在各类网页中游走&#xff0c;快速而高效地采集数据。然而如果目标网站分布在多个国家或者存在区域性限制&#xff0c;那靠普通的网络访问可能会带来诸多阻碍。而这时&#xff0c;“海外代理”俨然成了爬虫工程师们的得力帮手&#xff01; …...

安卓环境搭建开发工具下载Gradle下载

1.安装jdk(使用java语言开发安卓app) 核心库 java.lang java.util java.sq; java.io 2.安装开发工具(IDE)android studio https://r3---sn-2x3elnel.gvt1-cn.com/edgedl/android/studio/install/2023.3.1.18/android-studio-2023.3.1.18-windows.exe下载完成后一步一步安装即…...