hadoop中的Writable

hadoop 要使一个类能序例化, 要实现Writable接口, Writable 调用DataInput和DataOutput实现序例化。 

DataOutput是JDK中IO包下的一个类, 提供了writeBoolean, writeByte, writeShort。等方法了。

这样让用户决定哪一个字段序例化, 怎么反序例化。

在org.apache.hadoop.io包下包含了大量的可序列化的组件,它们都实现了Writable接口,Writable接口提供了两个方法,write和readFields,分别用来序列化和反序列化。

 

Writable机制紧凑、快速(但不容易扩展到Java以外的语言,如C、Python等)。和java.io.Serializable不同,Writable接口不是一个说明性接口,它包含两个方法

 

public interface Writable {
  /** 
   * Serialize the fields of this object to <code>out</code>.
   * 
   * @param out <code>DataOuput</code> to serialize this object into.
   * @throws IOException
   */
  void write(DataOutput out) throws IOException;

  /** 
   * Deserialize the fields of this object from <code>in</code>.  
   * 
   * <p>For efficiency, implementations should attempt to re-use storage in the 
   * existing object where possible.</p>
   * 
   * @param in <code>DataInput</code> to deseriablize this object from.
   * @throws IOException
   */
  void readFields(DataInput in) throws IOException;
}

 

自定义Hadoop Writable 编程 在上述示例中,CustomWritableExample类定义了一个MapReduce作业,其中包含CustomWritableMapper和CustomWritableReducer。在Hadoop中,Writable是一种可序列化的数据类型,用于在MapReduce作业中传递数据。在上述代码中,CustomWritable类实现了Writable接口,并实现了write和readFields方法。通过上述示例代码,您可以开始创建自己的Hadoop Writable类型,并在Hadoop作业中使用它们。 阅读详情

相关推荐

Hadoop-2.4.1学习之Writable及其实现

本文学习了WritableWritableComparable接口,并结合IntWritable和Text类介绍了具体的实现,最后给出了一个自定义的WritableComparable类

skyWalker_ONLY 3923

万字长文Hadoop序列化机制+框架+Writable类详解

传统的计算机系统通过 I/O 操作与外界进行交流,Hadoop 的 I/O 由传统的 I/O 系统发展而来,但又有些不同,Hadoop 需要处理 P、T 级别的数据,所以在 org.apache.hadoop.io 包中包含了一些面向海量数据处理的基本输入输出工具,本章会对其中的序列化和压缩进行研究。

2401_83384536的博客 1326

Vivado XDMA仿真实战:从配置到链路训练全解析

本文深入解析了Vivado中XDMA IP核的仿真实战流程,重点剖析了PCIe链路训练状态机(LTSSM)的工作原理与调试方法。通过搭建仿真环境、解读日志与波形,手把手指导如何从配置、链路训练(LTSSM)到BAR映射与DMA启动进行全流程分析与问题定位,帮助工程师掌握核心调试技能,确保PCIe链路稳定与数据传输正确。

weixin_29197051的博客 125

hadoop入门2:hadoop的自定义Writeable 、排序 和 reduce输出多个文件

mr原理图:   mp本次用计算每个手机号对应的上行和下行、总流量的业务进行测试 原始数据: 1363157985066   13726230503     00-FD-07-A4-72-B8:CMCC  120.196.100.8i02.c.aliimg.com         24      27      2481    24681   200 1363157995052   1...

每天进步一点 1066

hadoop中典型Writable类详解

Hadoop将很多Writable类归入org.apache.hadoop.io包中,在这些类中,比较重要的有Java基本类、Text、Writable集合、ObjectWritable等,重点介绍Java基本类和ObjectWritable的实现。 1. Java基本类型的Writable封装 目前Java基本类型对应的Writable封装如下表所示...

weixin_34377919的博客 207

hadoop writable的实现

adoop在与用户写的Mapper和Reducer通信的时候,总是使用类型化的数据:从文件读入到Mapper中,Mappers向Reducers提交和Reducers到输出文件,都是存储在Java对象中的Writable 类型 可以和文件和网络相互通信的对象必须遵循特定的接口,叫做Writable,它允许Hadoop以一种序列化的形式读写数据以适应于传输。Hadoop

yaoyaostep的专栏 858

hadoopWritable

------------本文笔记整理自《Hadoop海量数据处理:技术详解与项目实战》范东来 序列化是指将对象转化为字节流以便在网络上传输或写到磁盘进行永久存储,而反序列化是指将字节流转化为对象的过程。Hadoop主要两方面使用序列化技术:IPC(进程间通信)和数据持久化。 Hadoop提供的序列化格式Writable(org.apache.hadoop.io.Writable),相比Java...

碣石观海的博客 689

hadoop自带的writable类型

Hadoop 中,并没有使用Java自带的基本类型类(Integer、Float等),而是使用自己开发的类。Hadoop 自带有很多序列化类型,大致分为以下两种: 实现了WritableComparable接口的类   基础:BooleanWritable | ByteWritable   数字:IntWritable | VIntWritable | FloatWritable | Long...

生存,生活,差之毫厘谬以千里也 1544

HadoopWritable序列化接口

序列化和反序列化序列化: 将数据结构或对象转换成二进制串的过程。以便在网络上传输或者写入到硬盘进行永久存储 反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。在Hadoop中,主要应用于进程通信和永久存储。进程将对象序列化为字节流,通过网络传输到另一进程,另一进程接收到字节流,通过反序列化转回到结构化对象,以达到进程间通信。Mapper、Combine、Reduce等过程中,

Lic_LiveTime的专栏 1258

Hadoop】Why Writable Interface

在前面学习RPC系统的时候,可以看到client和server相互通讯都是用Writable类型来序列化。实际上,Writable Interface是一种Hadoop内置的序列化机制,MapReduce中的key, value都需要是Writable。 最初一直不太理解,为何Hadoop需要自定义一种序列化机制,而不重用Java内置的序列化机制。《Hadoop The Definiti

TragicJun的专栏 1468

hadoopWritable常规使用

一、writable接口 二、使用 1、常规不讲 例如:BooleanWritable、IntWritable、Text等,可通过构造器或者set方法创建,get方法获得。 2、IntWritable、LongWritable、VintWritable和VlongWritable 其中变长类型能节省储存空间,尤其是在-127到127之间的数值; 而对于数值在整个值域空间...

yancychas的博客 1915

Hadoop入门——序列化与Writable接口

一.序列化概念 序列化(Serialization)是指把结构化对象转化为字节流。 反序列化(Deserialization)是序列化的逆过程。即把字节流转回结构化对象。 Java序列化(java.io.Serializable)   二.Hadoop序列化的特点 1.紧凑:高效使用存储空间; 2.快速:读写数据的额外开销小; 3.可扩展:可透明地读取老格式的数据; 4.互操作:支持多语言...

东天里的冬天 1386

HadoopWritable , WritableComparable 接口

1.Writable 序列化时重要的接口,很多Hadoop中的数据类型都实现来这个接口,常见的有:FloatWritable ,DoubleWritable ,IntWritable ,LongWritable ,MapWritable ,Text 等Class 都实现来中个接口。 在Hadoop中定义一个结构化对象都要实现Writable接口,使得该结构化对象可以序列化为字节流,字节流也可以反序列

Andrew的成长之路 1726

实现HadoopWritable接口Implementing Writable interface of Hadoop

As we saw in the previous posts, Hadoop makes an heavy use of network transmissions for executing its jobs. As Doug Cutting (the creator of Hadoop) explaines in this post on the Lucene mailing list, j...

weixin_34095889的博客 180

hadoop 自定义Writable

hadoop 自定义实现Writable 以及一个小例子测试

XD_122 1029

自定义Hadoop Writable

hadoop中已经定义了很多Writable的实现,基本上可以符合我们日常使用,但是在一些特殊的场景我们可能还是需要自己去实现Writable,下面主要说明如何去实现自己的Writeable,及使用自定义的Writable作为map/reduce中的key值时遇到的一些问题。 首先需要实现org.apache.hadoop.io.Writable这个接口,该接口有write和readFields

石头的专栏 2983

HadoopWritableWritableComparable区别

Hadoop的key和value的传递序列化需要涉及两个重要的接口WritableWritableComparable 1> WritableJava代码 void write(DataOutput out) throws IOException;  void readFields(DataInput in) throws IOException; 

DPC27149的专栏 6260
上一篇: Hadoop InputFormat浅析---map前奏
下一篇: mapreduce中map是怎么做的?参数又是怎么解析传递给map方法的?没有ifelse判断
younglibin
博客等级 码龄18年 6粉丝 288原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值