WritableComparator RawComparator
来源:互联网 发布:用友进销存软件操作 编辑:程序博客网 时间:2024/06/03 22:46
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类作为键进行比较时,直接使用序列化的字节数组进行比较大小,而不用进行反序列化。
- WritableComparator RawComparator
- WritableComparator RawComparator
- Hadoop WritableComparator RawComparator
- RawComparator
- hadoop WritableComparable与WritableComparator
- hadoop源码分析-WritableComparator
- Hadoop- Writable, WritableCompareable, WritableComparator
- Hadoop mapreduce自定义分组RawComparator
- mapreduce编程模型之WritableComparator
- hadoop中Partitioner、WritableComparator的自己总结
- Hadoop-2.4.1学习之RawComparator及其实现
- hadoop的原生比较器RawComparator<T> public WritableCom...
- 022_Hadoop中的数据类型(Writable、WritableComparable、Comparator、RawComparator…)
- java.lang.RuntimeException: java.io.EOFException at org.apache.hadoop.io.WritableComparator.compare
- 吴超-----mapreduce的二次排序【在key排序的基础上,对value也进行排序】RawComparator
- SAP HANA 5. Using the SAP HANA OData Interface. (helloodata)
- linux 必须和根目录放在同一partition中的几个目录
- Difference between fragmentTransaction.hide and setVisibility(GONE);
- jackson框架的使用-annotation(注解)、属性的过滤
- sql临时表用法之一
- WritableComparator RawComparator
- UML建模之时序图(Sequence Diagram)
- 大数据应用的10大神话和误解
- 异步编程与响应式框架
- PL/SQL DEVELOPER 使用的一些技巧
- Linux串口驱动—struct termios结构体
- 程序员的四种类型
- 利益至上,开源也不免于此(转)
- JDK6和JDK7中String的substring()…