Hadoop中, 并没有使用Java自带的基本类型类, 而是使用自己开发的类,包括 IntWritable, FloatWritable, BooleanWritable, LongWritable, ByteWritable, BytesWritable, DoubleWritable, Text等等
Hadoop自带的数据类型可以满足一些简单的数据操作。 但有时,负载的数据类型需要自定义实现。 通过自定义Writable,能够完全控制二进制表示和排序顺序
package com.yc.hadoop.mapreduce;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import org.apache.hadoop.io.WritableComparable;
//public class MyText implements Writable {
public class MyText implements WritableComparable<MyText> {
private String content;
public MyText() {
}
public MyText(String content) {
this.content = content;
}
@Override //序列化
public void write(DataOutput out) throws IOException {
out.writeUTF(content);
}
@Override //反序列化
public void readFields(DataInput in) throws IOException {
content = in.readUTF();
}
@Override //可比较处理
public int compareTo(MyText o) {
return content.compareTo(o.content);
}
@Override
public String toString() {
return content;
}
}
Hadoop中, 并没有使用Java自带的基本类型类, 而是使用自己开发的类,包括 IntWritable, FloatWritable, BooleanWritable, LongWritable, ByteWritable, BytesWritable, DoubleWritable, Text等等Hadoop自带的数据类型可以满足一些简单的数据操作。 但有时,负载的数据类型需要自定义实现。 通过自定义Writable,能够完全控制二进制表示和排序顺序
package com.yc.hadoop.mapreduce;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import org.apache.hadoop.io.WritableComparable;
//public class MyText implements Writable {
public class MyText implements WritableComparable<MyText> {
private String content;
public MyText() {
}
public MyText(String content) {
this.content = content;
}
@Override //序列化
public void write(DataOutput out) throws IOException {
out.writeUTF(content);
}
@Override //反序列化
public void readFields(DataInput in) throws IOException {
content = in.readUTF();
}
@Override //可比较处理
public int compareTo(MyText o) {
return content.compareTo(o.content);
}
@Override
public String toString() {
return content;
}
}