`

自定义Writable实现类

 
阅读更多
public class ContentWritable implements Writable{
	
	
	private Text before;
	
	private IntWritable num;
	//默认的构造函数必须写,不然会出NullPointException异常,而且必须默认初始化成员变量,不知道为何,看底层是反射实例化的,估计跟这个有关。
	public ContentWritable(){
		this.before = new Text();
		this.num = new IntWritable();
	}
	
	public ContentWritable(Text before,IntWritable num){
		this.before = before;
		this.num = num;
	}
	
	@Override
	public void readFields(DataInput in) throws IOException {
		before.readFields(in);
		num.readFields(in);
	}

	@Override
	public void write(DataOutput out) throws IOException {
		before.write(out);
		num.write(out);
	}

	public Text getBefore() {
		return before;
	}


	public IntWritable getNum() {
		return num;
	}

	public void setBefore(Text before) {
		this.before = before;
	}

	public void setNum(IntWritable num) {
		this.num = num;
	}


}
分享到:
评论

相关推荐

    几种序列化的实现方法 java自带, Writable, Avro

    在Java和其他编程语言中,有多种序列化实现方法,包括Java自带的序列化、Writable接口(常见于Hadoop生态系统)以及Avro。下面将详细介绍这三种序列化方式。 1. **Java自带的序列化** Java内置的序列化机制是通过...

    hadoop自定义类型编程

    二、自定义Writable接口 在Hadoop中,所有用于数据交换的对象都必须实现`org.apache.hadoop.io.Writable`接口。这个接口规定了如何序列化和反序列化对象,以便在网络间传输或写入磁盘。具体来说,你需要实现两个方法...

    MapReduce2中自定义排序分组

    在实现自定义排序和分组后,需要在 JobConf 中配置这些类。例如,通过 `job.setPartitionerClass`、`job.setSortComparatorClass` 和 `job.setGroupingComparatorClass` 分别设置 Partitioner、排序比较器和分组比较...

    Hadoop大作业排序.zip

    在 java 中,要实现类的大小比较可以实现 Comparable 接口并通 过重写 compareTo 方法来实现。 在 Mapreduce 中,如果需要自定义类的排序规则,需要让类实现 Writable 的子接口 WritableComparable,重写里面的 ...

    NodeJS实现自定义流的方法

    前言 常见的自定义流有四种,Readable(可读流)、Writable(可写流)、Duplex(双工流)和 Transform(转换流),常见的自定义流...实现自定义可读流需创建一个类为 MyRead ,并继承 stream 中的 Readable 类,重写

    writable_font_data.rar_In Writing_datawritable

    在IT行业中,字体技术是图形用户界面(GUI)设计中的重要组成部分。...通过`writable_font_data.c`这个源代码文件,我们可以学习到如何在程序中实现这些功能,从而提升字体相关的应用程序的灵活性和创新性。

    node.js使用stream模块实现自定义流示例

    创建自定义可写流则需要继承`stream.Writable`,并实现`_write`方法。下面是一个向数组写入数据的可写流示例: ```javascript const { Writable } = require('stream'); class ArrWrite extends Writable { ...

    java-Hadoop序列化

    Hadoop提供了一些预定义的`Writable`实现类,如`Text`,它可以看作是Java `String`的序列化版本,用于处理UTF-8编码的文本数据。例如,我们可以创建一个`Text`对象来存储字符串: ```java Text test = new Text(...

    15、MapReduce介绍及wordcount

    如果需要自定义数据类型,需要实现Writable接口,如果该类型用作Key,还需实现Comparable接口。 5. 示例 例如,User类实现Writable和DBWritable接口,用于从数据库读取或写入数据。User类包含了id、userName、...

    Hadoop源代码分析(三)

    以`MyWritable`为例,这个类实现了`Writable`接口,包含了两个成员变量`counter`和`timestamp`,并在`write()`和`readFields()`中分别处理它们的序列化和反序列化过程。 在Hadoop的IO体系中,`ObjectWritable`扮演...

    大数据第二次作业1

    如果需要使用自定义的数据类型,例如自定义的结构体或对象,那么需要继承 Writable 接口,并实现其方法。例如: ```java public class Person implements Writable { private String name; private int age; ...

    Hadoop中MapReduce基本案例及代码(二)

    当自定义一个类之后,如果想要产生的对象在hadoop中进行传输,那么需要 这个类实现Writable的接口进行序列化/反序列化 案例:统计每个人产生的总流量 数据源 自定义类序列化 import java.io.DataInput; import java...

    Hadoop平台技术 序列化操作案例.docx

    通过实现`Writable`接口,我们可以创建自己的数据类型,使得MapReduce能够理解和处理这些自定义对象。在实际应用中,这样的灵活性对于处理复杂的数据结构和业务逻辑至关重要。同时,这个案例也强调了Mapper和Reducer...

    16_尚硅谷大数据之MapReduce_Hadoop序列化1

    总的来说,Hadoop的序列化机制是其高效处理大数据的关键组成部分,通过自定义Bean对象实现Writable接口,我们能够灵活地处理各种复杂数据类型,并在网络和磁盘间进行高效的数据交换。理解并掌握这一机制对于开发...

    Hadoop权威指南(第三版)

    Hadoop在数据存储方面提供了一系列优化方法,比如数据压缩、自定义的Writable类,以及各种数据序列化框架。Hadoop I/O支持不同的压缩库和编解码器,用户可以根据数据特点选择合适的数据压缩方式。而自定义的Writable...

    hadoop_the_definitive_guide_3nd_edition.pdf

    - **自定义Writable实现**:指导如何根据业务需求自定义Writable类。 - **序列化框架**:介绍了Hadoop支持的序列化框架,如Avro等。 通过以上内容的详细介绍,读者可以全面了解Hadoop的核心技术和应用场景,为后续...

    Hadoop: The Definitive Guide 3rd_edition

    Writable接口和Writable类是Hadoop序列化框架的核心,书中也介绍了如何实现自定义的Writable类。同时,本书还探讨了基于文件的数据结构,比如Avro、SequenceFile和MapFile。 书中还涉及了Hadoop生态系统中的其他...

    Hadoop源码分析

    例如,用户自定义的类需要实现`Writable`接口,以便在网络传输时进行编码和解码。此外,Hadoop还提供了丰富的工具包(util包),如记录处理(record包)和系统监控(metrics包)。 Hadoop的网络层(net包)处理DNS...

Global site tag (gtag.js) - Google Analytics