zoukankan      html  css  js  c++  java
  • hive 排序 order by sort by distribute by cluster by

    order by:

        order by是全局排序,受hive.mapred.mode的影响。
     
        使用orderby有一些限制:
        1、在严格模式下(hive.mapred.mode=strict),orderby必须跟limit一起使用(?)。
            原因:在执行orderby时,hive使用一个reducer,如果查询结果量很大,这个reducer执行起来会很费劲,所以必须要限制查询输出结果的数量。
            limit n 之后,reducer处理的数据有n * count(map)条数据。
        
        2、在非严格模式下(默认,hive.mapred.mode=nonstrict),orderby可以不跟limit一起使用。
     
        相关设置:
        set hive.mapred.mode=strict;
        set hive.mapred.mode=nonstrict;    
     
        例子:
        select id, name from user order by name limit 10;

    sort by:

        对每个reducer里的数据进行排序,如果有多个reducer执行查询,则查询出来的数据是部分排序的。。
     
        也可以使用limit n来减少reducer处理的数据量。
     
        相关设置:
        set mapred.reduce.tasks=n;
     
        例子
        hive使用2个reducer执行查询select col1, col2 from t1 sort by col1 asc, col2 desc,则:
        一个reducer的输出结果是:
        0    5
        0    3
        3    6
        9    1
        另一个reducer的输出结果是:
        0    4
        0    3
        1    1
        1    5
        说明:对同一个reducer里的数据进行排序。

    distribute by:

        hive执行查询时,在mr的分区结果根据distributeby的字段进行分区,这样相同字段的数据由同一个reducer处理。
        
        相关设置:
        set mapred.reduce.tasks=n;
     
        例子
        某一列的数据如下:
        x1
        x2
        x3
        x4
        x1
        对这个字段distributeby后,
        reducer1里的数据是:
        x1
        x2
        x1
        reducer2里的数据是:
        x3
        x4
        说明:同一个值(x1)交由同一个reducer处理,但是数据是无序的。

    cluster by:

        clusterby是distributeby和sortby的快捷方式,根据clusterby字段进行分区并排序。
        
        例子
        某一列的数据如下:
        x1
        x2
        x3
        x4
        x1
        对这个字段distributeby后,
        reducer1里的数据是:
        x1
        x1
        x2
        reducer2里的数据是:
        x3
        x4
        说明:同一个值(x1)交由同一个reducer处理,数据也是有序的。
        

     

  • 相关阅读:
    iframe脸面的页面和父页面之间的交互方法
    iframe高度自适应
    获取html元素所在页面的坐标
    自制的几个jquery插件
    将DataTable转换成Json格式
    QL 获取当前日期,年、月、日、周、时、分、秒
    DropdownList异步刷新GridView数据
    图片热区——map的用法
    Chart控件文档
    母版页改变被嵌套的页面中的控件ID的解决方法
  • 原文地址:https://www.cnblogs.com/lishouguang/p/4560753.html
Copyright © 2011-2022 走看看