Hadoop WritableComparator RawComparator
来源:互联网 发布:c 编程例子 编辑:程序博客网 时间:2024/05/21 22:24
转自:http://blog.csdn.net/maixia24/article/details/16964655
IntWritable 实现了WritableComparable 接口, 它是Writable 和 java.lang.Comparable 接口的子类
package org.apache.hadoop.io;
public interface WritableComparable<T> extends Writable, Comparable<T> {
}
数据类型的比较在MapReduce中式及其重要的, Mapreduce中有一个排序阶段,key和其他的key相比较。 针对此,Hadoop 提供的一个优化是 RawComparator,它继承了Java’s Comparator:
package org.apache.hadoop.io;
import java.util.Comparator;
public interface RawComparator<T> extends Comparator<T> {
public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2);
}
这个接口允许实现它来在字节流的层面比较,而不用反序列化为对象,因此,可以避免过多的对象的创建。
例如,IntWritables的comparator 类实现了compare()方法,这是通过从每一个byte数组b1,b2直接读取整数,并且直接比较,比较的时候,从开始的位置(s1和s2),并且长度是(l1和l2)
WritableComparator 是RawComparator 的一个通用实现。它提供了两个主要的功能。第一,它提供了一个默认的compare()方法的实现,从字节流反序列化为对象,使用对象的compare()方法进行比较。第二,作为RawComparator 的一个工厂类,例如,获取一个IntWritable的comparator ,如下:
RawComparator<IntWritable> comparator = WritableComparator.get(IntWritable.class);
comparator 可以被用来比较两个IntWritable 对象:
IntWritable w1 = new IntWritable(163);
IntWritable w2 = new IntWritable(67);
assertThat(comparator.compare(w1, w2), greaterThan(0));
或者它的序列化描述是:
byte[] b1 = serialize(w1);
byte[] b2 = serialize(w2);
assertThat(comparator.compare(b1, 0, b1.length, b2, 0, b2.length),
greaterThan(0));
Hadoop自身提供的IntWritable、LongWritabe等类已经实现了这种优化,使这些Writable类作为键进行比较时,直接使用序列化的字节数组进行比较大小,而不用进行反序列化。
- Hadoop WritableComparator RawComparator
- WritableComparator RawComparator
- WritableComparator RawComparator
- hadoop WritableComparable与WritableComparator
- hadoop源码分析-WritableComparator
- Hadoop- Writable, WritableCompareable, WritableComparator
- Hadoop mapreduce自定义分组RawComparator
- RawComparator
- hadoop中Partitioner、WritableComparator的自己总结
- Hadoop-2.4.1学习之RawComparator及其实现
- hadoop的原生比较器RawComparator<T> public WritableCom...
- java.lang.RuntimeException: java.io.EOFException at org.apache.hadoop.io.WritableComparator.compare
- mapreduce编程模型之WritableComparator
- 022_Hadoop中的数据类型(Writable、WritableComparable、Comparator、RawComparator…)
- 吴超-----mapreduce的二次排序【在key排序的基础上,对value也进行排序】RawComparator
- hadoop
- Hadoop
- Hadoop
- 关于mysql中触发器old和new如何更好的区别我有话要说?
- 纪念七夕情人节的完美婚姻算法
- python abs()函数
- 程序发布服务器步骤
- 树的子结构
- Hadoop WritableComparator RawComparator
- win7企业版+vs2015社区版+opencv3.10
- Layer-Springs
- POJ2485Highways(Kruskal算法)
- css3实现底部弧形阴影以及翘边阴影
- Java之局部内部类和匿名内部类的区别详解(附源码)
- 基于Asp.net将excel保存到服务器
- 语义分析的一些方法(二)
- ABAP MIR7预制凭证BAPI