官方给例子 做hadoop开发的都知道
WritableComparable没有自己的方法体。
public class MyWritableComparable implements WritableComparable {
// Some data
private int counter;
private long timestamp;
public void write(DataOutput out) throws IOException {
out.writeInt(counter);
out.writeLong(timestamp);
}
public void readFields(DataInput in) throws IOException {
counter = in.readInt();
timestamp = in.readLong();
}
public int compareTo(MyWritableComparable w) {
int thisValue = this.value;
int thatValue = ((IntWritable)o).value;
return (thisValue < thatValue ? -1 : (thisValue==thatValue ? 0 : 1));
}
}
一般序列化的类都会继承这个类型 有图为证。
看附件
http://dl2.iteye.com/upload/attachment/0096/8231/68aca470-285e-3c20-9a78-51828497e3a3.jpg
- 大小: 71.2 KB
分享到:
相关推荐
实现了WritableComparable接口的类,不仅可以将对象写入到Hadoop的数据流中,还能在MapReduce框架中比较这些对象,这对于排序、分组等操作是必不可少的。 接下来,我们以Person类为例,介绍如何自定义一个数据类型...
如果某个数据类型需要作为主键 key 使用,或者需要比较数值大小时,则需要实现 WritableComparable 接口。WritableComparable 接口继承自 Writable 接口,并添加了 compareTo() 方法。compareTo() 方法用于比较两个...
总结来说,Hadoop的排序机制是通过MapTask和ReduceTask的组合操作实现的,而自定义排序则需要实现WritableComparable接口并重写compareTo方法。这种灵活性使得用户可以根据具体业务需求对数据进行复杂排序,从而优化...
Writable 的子接口 WritableComparable,重写里面的 write, readFields 6 和 compareTo 方法,所以可以自定义一个类作为 key,类中包含 2 个 需要进行排序的字段,并在类中实现比较算法,先判断 first_name 是 否...
这个类需要实现`WritableComparable`接口,这样Hadoop可以读取、序列化和比较这些对象。`compareTo`方法用于比较两个`YearMaxTAndMinT`实例,确保按照最高气温降序和最低气温升序的规则排序。 ```java public class...
其他重要类与接口包括Configuration类、Job类、Writable接口和WritableComparable接口。Configuration类读取配置文件。Job类配置、提交Job,控制其执行,查询其状态。Writable接口序列化输入输出。...
public int compare(WritableComparable a, WritableComparable b) { // 自定义比较逻辑 } } ``` ### 3. 切片(Slicing) 切片是指将大文件拆分成多个小块(Block),每个块作为一个单独的输入分片(InputSplit...
如果自定义类型还需要作为排序的键(Key),则应实现`org.apache.hadoop.io.WritableComparable<T>`接口。这会额外要求你实现`compareTo(T other)`方法,以定义比较规则。确保此方法的实现符合你的业务需求,例如,...
Hadoop提供了一系列预定义的数据类型,如IntWritable、LongWritable、Text等,它们都实现了WritableComparable接口,可以直接在MapReduce程序中使用。如果需要自定义数据类型,需要实现Writable接口,如果该类型...
public int compare(WritableComparable v1, WritableComparable v2) { // 比较逻辑 } ``` 4. **Reduce阶段** Reduce阶段是MapReduce中的最后一个阶段,它的主要任务是对Shuffle阶段产生的键值对进行进一步...
在实际应用中,我们可能会创建自定义的序列化类,例如`UserWritable`,它实现了`WritableComparable`接口,这样不仅可以实现序列化和反序列化,还可以进行比较操作。`UserWritable`类包含多个字段,如姓名、年龄、...
在上述代码示例中,OrderKey类用于封装排序需要的字段,其内部使用WritableComparable接口来定义排序逻辑。定义的比较方法不仅考虑了字段的自然顺序,还考虑了字段值的哈希码,以处理排序时可能产生的冲突。 总之,...
* WritableComparable 是 MapReduce 编程模型中键值对的类型。 知识点4:数据库管理系统 * 数据仓库是一个存储数据的仓库,随着时间的变化不断增加新的数据内容。 * 数据仓库中的数据是随着时间的变化不断地进行...
WordCount的实现涉及到了Hadoop自定义的数据类型,如Text和IntWritable,它们实现了WritableComparable接口,便于数据序列化和比较。Map函数解析输入文本,生成<单词, 1>的键值对,reduce函数则将所有相同单词的计数...
SortPair是实验的核心数据结构,它实现了`WritableComparable`接口,以满足MapReduce中键值对的序列化和比较需求。SortPair包含两个`IntWritable`类型的变量,分别存储每一行的两个整数值。`write`和`readFields`...
4. MapReduce编程模型的键值对:WritableComparable。 5. HBase的记录存储方式:列族。 6. 数据挖掘的分类问题:买啤酒的人很大概率也会购买尿布。 7. KDD的全称:数据挖掘与知识发现。 8. 数据挖掘的预测建模:...
- 在MapReduce编程模型中,键值对的Key必须实现`WritableComparable`接口,这是因为Key需要支持比较操作以便于排序和分组。 ### 数据类型与存储 **1. 结构化与非结构化数据** - **结构化数据**: 如ERP数据和财务...
Hadoop提供了默认的Writables接口,如IntWritable、Text等,但当处理自定义对象时,我们需要实现WritableComparable接口来自定义序列化逻辑。例如,你可以创建一个包含日期、县、州、FIPS代码、病例数和死亡病例数的...
输入和输出的数据格式需实现Writable接口,键需实现WritableComparable接口,以便进行排序。 7. **语言兼容性**:虽然Hadoop框架是用Java实现的,但MapReduce应用程序可以使用多种语言编写,如通过Hadoop Streaming...
1. 方案一:创建一个实现`WritableComparable`接口的自定义类,设定泛型为自定义类。在这个类中,你需要定义需要排序的字段,并提供getter和setter方法。然后实现`write`、`readFields`和`compareTo`方法。`write`...