Hadoop的序列化机制以及序列化案例求解每个部门工资总额

  • 1 Hadoop的序列化
    • 1.1 序列化定义
    • 1.2 Java序列化编程
    • 1.3 hadoop序列化编程
  • 2 序列化求解每个部门工资总额

手动反爬虫,禁止转载: 原博地址 https://blog.csdn.net/lys_828/article/details/118966924(CSDN博主:Be_melting)

 知识梳理不易,请尊重劳动成果,文章仅发布在CSDN网站上,在其他网站看到该博文均属于未经作者授权的恶意爬取信息

1 Hadoop的序列化

1.1 序列化定义

序列化(Serialization):是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

1.2 Java序列化编程

通过上面的定义可能很难进行理解,通过Java代码的实际操作来加深理解一下序列化的含义。首选新建一个package命名为ser.java,然后随便创建一个学生的类

然后就是创建一个测试的类,进行运行,看一下能不能把实例化的学生信息存储在本地

然后运行这个测试的Java程序,输出的结果显示(抛出了NotSerializableException,也就是无法被序列化的错误)

要想实现对象永久化的存储就必须实现序列化的过程,对于Java来讲提供的有一个Serializable接口,在创建类的时候执行一下这个接口再运行即可

最后为了显示运行成功状态,在测试的Java程序中添加一条输出提醒,最后的输出如下,实现了对象的持久化存储的要求

1.3 hadoop序列化编程

和Java实现序列化一样,要想在hadoop中把一种数据类型作为Map和Reduce的输入和输出的Key以及Value,也就必须实现序列化的接口(Writable,与Java的Serializable类似)。比如创建一个Employee类,封装员工数据,作为Map阶段的value(也就是k2),然后k2使用的是员工号

使用的数据还是之前的员工表中的数据,共八个字段,然后创建一个类包含所有的字段

由于数据最终要被输出到HDFS上,为了方便进行查看最终的结果,可以重写tostring方法,将员工号、姓名、薪水和部门号四个字段进行转化(当然也可以全部进行转化)

以上就是完成了最简单的Java Class的设置,但是这个程序并不能作为Map的key和value,因为没有实现序列化的接口。只需要添加implements Writable代码,然后自动填充对应的方法(在Employee类后面执行Writable的接口,然后鼠标放在Employee上面,点击第一个选项,会自动补充需要完善的方法)

自动生成要完善的方法有两个,一个就是读取(反序列化过程),一个是输出(序列化的过程)

在进行完善的过程中,需要注意一点:序列化的过程要和反序列化的过程顺序保持一致

然后就可以创建一个Map程序和执行的主程序进行验证一下,Map程序里面注意要对每个字段进行一一设置

然后就是主程序界面,由于没有了Reduce,所以少了一行代码,最后要修改的也是三个框中的内容,其余的保持不变

至此就完成了测试代码的开发,然后将代码打包成为jar文件,上传至hadoop进行测试

然后hadoop上测试显示成功运行

最后一步就是看看生成的目录文件中的信息是否一致(输出很完美,就是和最开始我们希望要看到的一样,再对tostring进行重写输出的格式保持一致)

2 序列化求解每个部门工资总额

上一篇博客进行求解每个部门工资总额的求解,刚刚又进行了hadoop序列化的设置,那么接下来就是直接使用序列化的方式进行求解每个部门工资总额的求解

过程详解可以基于之前的过程进行改造,主要是V2和v3之间的区别,这里都变成了对象,然后v3就是对象中取出薪水构成的集合,最后的v4就是薪水的总和

直接就利用刚刚序列化的代码进行编写,创建一个ser.saletotal的package,接着就是三个框架,首先将定义的Employee.java这个文件直接复制过来,然后就是Map程序中修改最后一行的代码,将原来的员工号修改为部门号,如下

Reduce的程序代码之前没有进行创建,因此主要的工作量就是在这个地方,新建一个Java Class命名为EmpolyeeReducer,具体的运算也是进行求和,但是和之前的变量上面还是有点区别

最后就是创建执行的主程序,还是加载模板进行内容的修改,代码部分只需要修改一行,部分注释修改两处就可以了

最后将代码程序打包生成为p4.jar文件,上传到hadoop中进行测试

核实一下生成的文件中的信息是否一致(很完美,结果是一样的,啦啦啦)

至此关于Hadoop的序列化机制以及序列化案例求解每个部门工资总额的知识点就全部梳理完毕了,完结撒花✿✿ヽ(°▽°)ノ✿

【MapReduce】Hadoop的序列化机制以及序列化案例求解每个部门工资总额相关推荐

  1. Hadoop 3.x|第九天|序列化及案例代码编写

    目录 Hadoop序列化 定义 为什么需要序列化 为什么不用Java的序列化 源码 序列化案例实操-流量统计 需求 输入数据 输出数据 分析各个阶段的KV 自定义对象实现序列化接口的步骤 创建Flow ...

  2. MapReduce程序之序列化原理与Writable案例

    [TOC] MapReduce程序之序列化原理与Writable案例 前言 在编写MapReduce程序时,我们会发现,对于MapReduce的输入输出数据(key-value),我们只能使用Hado ...

  3. Hadoop大数据——mapreduce的secondary排序机制

    secondary排序机制 ----就是让mapreduce帮我们根据value排序 考虑一个场景,需要取按key分组的最大value条目: 通常,shuffle只是对key进行排序 如果需要对val ...

  4. java 序列化 protobuf_java序列化机制之protobuf(快速高效跨语言)

    我们之前曾讲过java自带的一种序列化机制,但是这种机制效率太低,有很多缺点.因此也涌现出了很多优秀的系列化框架,比如说protobuf.protostuff.thrift.hession.kryo. ...

  5. Hadoop序列化与Java序列化

    序列化就是把内存中的对象的状态信息转换成字节序列,以便于存储(持久化)和网络传输 反序列化就是就将收到的字节序列或者是硬盘的持久化数据,转换成内存中的对象. 1.JDK的序列化 只要实现了serial ...

  6. java序列化机制Serialize接口使用

    一.理解 Serializable接口是启用其序列化功能的接口.实现java.io.Serializable 接口的类是可序列化的.没有实现此接口的类将不能使它们的任意状态被序列化或逆序列化. 序列化 ...

  7. Strom序列化机制

    Storm 中的 tuple可以包含任何类型的对象.由于Storm 是一个分布式系统,所以在不同的任务之间传递消息时Storm必须知道怎样序列化.反序列化消息对象. Storm 使用 Kryo库对对象 ...

  8. java序列化算法透析_Java序列化机制与原理的深入分析

    Java序列化算法透析 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.Java序列化API提供一 ...

  9. Spark 配置Kryo序列化机制注意细节

    一.Spark 的序列化 序列化 Spark 是一个高性能.分布式的.基于内存计算的计算引擎,Spark 集群中包含多个节点,各节点之间要进行通信(比如数据传输,Spark 通过 RPC 进行节点间的 ...

最新文章

  1. mysql 主从复制
  2. 【巧妙算法系列】【Uva 11464】 - Even Parity 偶数矩阵
  3. (前端开发)表格中的行全选、全不选、反选以及数据行背景色变换的示例代码
  4. 先知模型 facebook_Facebook先知
  5. SecureCRT中文显示乱码的解决方法
  6. 关于APS生产排产软件选择,有哪几个要素?
  7. 存储区域网络(SAN)概念和设计基础
  8. 刑法中关于计算机犯罪的定义,界定计算机犯罪概念的原则
  9. 服务器上qq邮件不能打开方式,QQ邮箱打不开是怎么回事?从QQ面板上打不开QQ邮箱怎么解决?...
  10. EL表达式与JSTL标签库
  11. Java学习笔记,面向猴子记笔记2021/5/29更新
  12. 第一次见岳父岳母的攻略「转载」
  13. SQL之case when then用法(用于分类统计)
  14. 【MySQL 数据库】MySQL 的对库的操作及其数据类型
  15. Sparkthrift-sql执行报错-File does not exist: hdfs://xxx/t_bd_materialgroup/xxx.parquet
  16. 社区电商平台运营中常遇到的一些问题
  17. 整理:console的用法
  18. python识别魔方色块_解魔方机器人教程:识别颜色
  19. 【笔记】openwrt - nginx编译、配置反向代理(https下netdata不显示)
  20. android 内存清理

热门文章

  1. android工程iml文件,Android8.1 源码编译.ipr .iml 文件
  2. WeifenLuo.WinFormsUI.Docking的使用 z
  3. 视频加文件怎么做成二维码?轻松完成二维码图片制作
  4. Python调用科大讯飞语音API实现文字转音频
  5. MT6750芯片资料datasheet资料下载
  6. onserverclick and onclick
  7. 2021年电工(中级)报名考试及电工(中级)免费试题
  8. 程序员的MacBook工作环境配置
  9. 小程序自定义菜单Navbar
  10. 汉王人脸识别考勤机颠覆考勤市场