zoukankan      html  css  js  c++  java
  • 关于Hadoop分组排序

    分组排序是干什么的?

    在Hadoop的Reduce阶段中的reduce方法中默认每一组数据调用该方法,那么什么是一组数据呢?

    如果Reduce阶段输入的key相同那么就认为是一组数据

    简单的说,在开发中,往往将数据封装到bean对象中,又因为bean对象中有多个字段,如果我们这些字段不完全相同

    那么就不是相同的key也就不能成为一组数据,就导致了多次调用reduce方法

    这种情况下,我们使用分组排序(辅助排序),就是把bean对象中的某一个字段进行比较,如果这个字段相同,我们就认为是相同的key。

    关于分组排序(辅助排序)使用的注意事项

    1、我们需要自定义一个类继承WritableComparator类(是继承不是实现)

    2、重写compareTo方法

    3、在我们的自定义类中,需要添加构造器

     

     传入三个参数:

    1)传入一个对象

    2)配置信息,可以写空

    3)要传入true,为什要写true,进入super的源码看一下

    在父类的源码中,第三个参数决定是否创建key的对象,如果不是createInstances不是true就没有这个对象,那么程序就会报空指针异常。

    4、在Deiver中设置分组比较器为自定义的类

  • 相关阅读:
    sqlalchemy 转json 的几种常用方式
    程序员的思维模型指南
    软件的本质
    Python数据模型及Pythonic编程
    Linux Kernel C语言编程范式
    U-Boot内存管理
    Linux网络文件系统的实现与调试
    Linux内核内存管理架构
    Linux多核并行编程关键技术
    Go/Python/Erlang编程语言对比分析及示例
  • 原文地址:https://www.cnblogs.com/atBruce/p/12390262.html
Copyright © 2011-2022 走看看