zoukankan      html  css  js  c++  java
  • hadoop Sort排序

     1 public int getPartition(IntWritable key,IntWritable value,int numPartitions){
     2             int Maxnumber = 12345;
     3             int bound = Maxnumber/numPartitions +1;
     4             int keynumber = key.get();
     5             
     6             System.out.println("numPartition:"+numPartitions);
     7             for(int i = 0;i<numPartitions;i++){
     8                 if(keynumber<bound *i && keynumber >= bound*(i-1))
     9                     return (i-1);
    10                 }
    11         return 0;
    12             }
    13         
    14     }
    //if you don't configure the parameter, and it's not configured in mapred-site.xml (mapred.reduce.tasks) then the default is 1.
    numPartitions的值 在mapred-site.xml中定义,默认是1。

    MapReduce过程中就有排序,它是按照key值进行排序,如果key为封装int的IntWritable类型,那么MapReduce按照数字大小对key排序,如果key为封装String的Text类型,那么MapReduce按照字典顺序对字符串进行排序。 Reduce自动排序的数据仅仅是发送到自己所在节点的数据,使用默认的排序并不能保证全局的顺序,因为在排序前还有一个partition的过程,默认无法保证分割后的各个Reduce上的数据整体上是有序的,所以要使用默认的排序,还必须定义自己的Partition类。保证执行Partition过程之后所有Reduce上的数据在整体上是有有序的,然后再对局部Reduce上的数据进行默认排序,这样才能保证整体有序。

  • 相关阅读:
    java方式实现堆排序
    java方式实现归并排序
    用java方式实现快速排序
    Linux中crontab定时任务
    TCP/IP网络协议初识
    github设置添加ssh
    IDM下载工具使用
    Java程序在内存中运行详解
    GitHub的高级搜索方式
    深入理解JavaScript中的堆与栈 、浅拷贝与深拷贝
  • 原文地址:https://www.cnblogs.com/happinessqi/p/3404733.html
Copyright © 2011-2022 走看看