`
younglibin
  • 浏览: 1214449 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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源代码分析(完整版).pdf

    最后,源代码中提到的MyWritable类是Hadoop中Writable接口的一个典型实现,它演示了如何通过实现Writable接口中的write和readFields方法来定义可序列化的对象。这个类能够被Hadoop的IPC机制用于序列化和反序列化,以...

    Hadoop中HDFS源代码分析

    这个包包含了Hadoop中的基本输入/输出类,如`BytesWritable`、`Text`等,以及序列化和反序列化机制,如`Writable`和`WritableComparable`接口。这些接口和类是HDFS数据传输的基础。 #### 3.2 RPC实现方法 Hadoop...

    Hadoop源码分析(完整版)

    在Hadoop源码分析中,我们能看到这些Google技术的影子,例如Chubby和ZooKeeper,GFS和HDFS,BigTable和HBase,MapReduce和Hadoop。通过对比这些技术,学习者可以更容易地把握Hadoop的设计思路。 Hadoop源码复杂且...

    Hadoop序列化机制

    标题中的“Hadoop序列化机制”是指Hadoop生态系统中用于数据传输和存储的数据表示方式,它是Hadoop MapReduce和Hadoop Distributed File System (HDFS)等组件之间交换数据的关键技术。序列化是将对象转化为可存储或...

    hadoop api.doc

    在Hadoop生态系统中,API扮演着至关重要的角色,它们提供了与Hadoop分布式文件系统(HDFS)以及其他核心组件交互的接口。以下是对给定文件中提到的Hadoop API的详细说明: 1. **org.apache.hadoop.conf**: 这个包...

    Hadoop源代码分析(三)

    `Writable`接口是Hadoop中数据序列化的基础,它定义了两个关键方法:`write()`和`readFields()`。`write()`方法用于将对象的数据写入`DataOutput`流,而`readFields()`则从`DataInput`流中读取数据,实现反序列化。...

    Hadoop源码分析 完整版 共55章

    - **组件对应**:在Hadoop中,各个组件对应Google的技术如下: - Chubby → ZooKeeper - GFS → HDFS - BigTable → HBase - MapReduce → Hadoop MapReduce - **扩展项目**:除了核心的Hadoop项目外,还衍生出...

    Hadoop权威指南 第二版(中文版)

     从Hadoop URL中读取数据  通过FileSystem API读取数据  写入数据  目录  查询文件系统  删除数据  数据流  文件读取剖析  文件写入剖析  一致模型  通过 distcp并行拷贝  保持 HDFS 集群的均衡  ...

    Hadoop技术内幕 深入解析HADOOP COMMON和HDFS架构设计与实现原理

    3. **I/O**:Hadoop提供了一套高效的序列化和反序列化库,如Writable接口,使得数据能在节点间高效传输和存储。 4. **日志管理**:通过Log4j等工具,Hadoop实现了日志收集和监控,方便故障排查和性能优化。 接下来...

    Hadoop源代码分析完整版.doc

    org.apache.hadoop.io中定义了大量的可序列化对象,他们都实现了Writable接口。 Hadoop的源代码分析可以帮助我们更好地了解Hadoop的架构和实现机制。通过对Hadoop的源代码分析,我们可以更好地理解Hadoop的工作原理...

    hadoop访问数据库

    将Hadoop与现有数据库结合,可以在Hadoop应用程序中访问数据库文件,实现数据的高效处理和分析。 #### 二、DBInputFormat详解 DBInputFormat是Hadoop自0.19.0版本开始支持的一种输入格式,位于包`org.apache....

    Hadoop权威指南(中文版)2015上传.rar

    从Hadoop URL中读取数据 通过FileSystem API读取数据 写入数据 目录 查询文件系统 删除数据 数据流 文件读取剖析 文件写入剖析 一致模型 通过 distcp并行拷贝 保持 HDFS 集群的均衡 Hadoop的归档文件 使用Hadoop归档...

    HadoopCommon包分析1

    在Hadoop中,ObjectWritable是一个关键类,它封装了各种Java基本类型、字符串、枚举、空值以及Writable子类,适应了字段需要使用多种类型的需求。在RPC过程中,序列化和反序列化参数,或者在一个SequenceFile的值中...

    Hadoop 0.20.2 API

    0.20.2是Hadoop的一个历史版本,尽管已经较旧,但依然在某些环境中被使用或作为学习理解Hadoop的基础。 Hadoop的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce。HDFS是分布式文件系统,它允许多...

    hadoop 面试题大全

    1. Hadoop集群的瓶颈通常在于磁盘I/O,这是大数据处理中的常见问题,因为大量数据的读写操作对硬件性能有很高要求。优化I/O性能可以通过使用更快的硬盘、SSD或者采用更高效的存储策略来解决。 2. Hadoop的运行模式...

    Hadoop教程.pdf

    "Hadoop教程.pdf" 本文档提供了Hadoop Map/Reduce教程的详细介绍,从用户的角度出发,全面地介绍了Hadoop Map/Reduce框架的各个方面。下面是其中的重要知识点: 1. Hadoop是一个分布式的文件系统,可以将多台机器...

    Hadoop源代码分析完整版

    这主要是为了确保数据在网络上传输时的效率和安全性,例如通过org.apache.hadoop.io包中的Writable接口实现自定义的数据序列化和反序列化过程。 源代码中可见,自定义序列化的实现非常直接,通常涉及两个主要方法:...

    传智黑马赵星老师hadoop七天课程资料笔记-第三天(全)

    该图可能解释了Hadoop支持的不同序列化框架,如Writable接口或Avro,以及它们的工作原理。 4. **第三天.ppt** - 这是课程的PPT材料,很可能包含了详细的课件,涵盖了第三天课程的所有主题,包括Hadoop的执行流程、...

    Hadoop源代码分析(完整版)

    这种机制主要集中在`org.apache.hadoop.io`包中,定义了一系列可序列化的对象,并要求这些对象实现`Writable`接口。例如: ```java public class MyWritable implements Writable { private int counter; private...

Global site tag (gtag.js) - Google Analytics