`
zhaomengsen
  • 浏览: 210614 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

WritableComparator

 
阅读更多
看完这个类,感觉设计这个类的哥们思维不清晰,有点脑残。

这个类进程类RawComparator的意思是说,提供了一个两个方法
1.个是通过类比较,1个是通过类的字符流比较。当然侧重后者。

你看看里面管七八糟的方法,如果这个类别不用的方法,马上麻烦设计的大哥能不能设置成私有方法。
   还有 如果通过流比较 还要把构造函数 第二参数 设置成true. 只是要备注说明吧。
   如果不看源代码,只看api的人。真的用不起来这个类。


compare(WritableComparable a, WritableComparable b)

这个比较是比较值的大小

compareBytes(byte[] b1, int s1, int l1,
                                 byte[] b2, int s2, int l2)
这个需要构造参数的第二个参数为true

变量

comparators
private static HashMap<Class, WritableComparator> comparators =
    new HashMap<Class, WritableComparator>(); // registry
为了提高效率把 类型和比较器放到map里

因为hashmap是线程不安全,为了保证线程安全
在用到put的方法上加了synchronized
  public static synchronized void define(Class c,
                                         WritableComparator comparator) {
    comparators.put(c, comparator);
  }



里面很多redaInt ,readLong,readDouble等方法。
是字符串和 int longdouble类型的转换。
具体怎么转换,readVInt 和readInt区别

看我以后的博客
  /** Parse an integer from a byte array. */
  public static int readInt(byte[] bytes, int start) {
    return (((bytes[start  ] & 0xff) << 24) +
            ((bytes[start+1] & 0xff) << 16) +
            ((bytes[start+2] & 0xff) <<  +
            ((bytes[start+3] & 0xff)));

  }
分享到:
评论

相关推荐

    MapReduce2中自定义排序分组

    这就需要我们自定义 MapReduce 中的 `Partitioner`、`Comparator` 和 `WritableComparator` 类。 1. **自定义 Partitioner**: 默认情况下,Hadoop 使用 `HashPartitioner` 将键的哈希值与 Reduce 任务数量取模,...

    HadoopMapReduce-分区、排序、切片等.zip

    public static class My.Comparator extends WritableComparator { public My.Comparator() { super(MyWritable.class, true); } @Override public int compare(WritableComparable a, WritableComparable b) ...

    数据分析—排序.pdf

    2. 方案二:继承`WritableComparator`类,重写无参构造函数,指定key的类型,如`super(Text.class, true)`。再重写`compare`方法,实现自定义比较规则。 **二次排序(多字段排序)**: 在需要对多个字段进行排序的...

    lab3实验报告1

    参考了Apache Hadoop的`WritableComparator`文档以及相关的博客文章,这些资源对于理解MapReduce的自定义比较器和分组机制非常有帮助。 通过这个实验,参与者不仅掌握了MapReduce的基本工作原理,还深入了解了如何...

    实验报告1

    实验过程中参考了Apache Hadoop的官方文档以及一些技术博客,了解`WritableComparator`的使用以及MapReduce的相关优化策略。 通过这次实验,我们不仅加深了对Hadoop MapReduce的理解,也学会了如何设计和实现自定义...

    大数据 40 道面试题及答案.docx

    之后会对key进行sort排序,grouping分组操作将相同key的value合并分组输出,在这里可以使用自定义的数据类型,重写WritableComparator的Comparator方法来自定义排序规则,重写RawComparator的compara方法来自定义...

    MapReduce模型--自定义数据类型

    自定义比较器是WritableComparable接口的一部分,通过继承WritableComparator类,可以定义对象比较的具体逻辑。例如,PersonComparator类重写了compare()方法,以决定两个Person对象在排序时的先后顺序。 在...

    Hadoop.MapReduce.分析

    - **WritableComparator**: 提供了一种高效的比较方法,如`compareBytes`,用于直接比较序列化后的字节流。 - **RawComparator**: 在0.20版本后引入,用于提高性能。如果应用程序未定义RawComparator,Hadoop将...

    hadoop的核心文件

    - **IO**:高效的序列化和反序列化工具,如Writables接口和WritableComparator。 Nutch中使用经过修改的Hadoop核心库,可能涉及到以下优化: - **性能提升**:对Hadoop的某些关键算法或数据结构进行了优化,提高了...

    MapReduce模型--Map端Combiners聚合

    - GroupCompare继承自WritableComparator类,并重写了compare方法,用于根据Group对象的groupA和groupB属性进行比较,实现了自定义的比较逻辑。 5. **编程实现** - 在MapReduce程序中,需要在驱动程序中设置...

    shuffle的关键阶段sort(Map端和Reduce端)源码分析

    return WritableComparator.get(getMapOutputKeyClass().asSubclass(WritableComparable.class), this); } ``` 在上面的代码中,我们可以看到,如果用户自定义了比较器,那么就会实例化用户自定义的比较器。如果...

    secondary-sort:Apache Crunch中辅助排序的演示

    在实际操作中,我们需要创建一个新的Comparator类,继承自`org.apache.crunch.types.writable.WritableComparator`,并重写其compare()方法以实现自定义的比较逻辑。然后,这个Comparator类需要在`groupByKey()`方法...

Global site tag (gtag.js) - Google Analytics