• 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处理,数据也是有序的。
        

     

  • 相关阅读:
    用JS获取地址栏参数的方法(超级简单)
    js全选
    梦幻西游手游三界奇缘答题 文字解答
    父级div height:auto无效解决办法
    DropDownList赋值,绑定,传值
    《梦幻西游》手游人宠抗防修炼点修消耗表
    使客户端的控件ID保持不变,不受母版页的影响
    无法读取项目文件 .csproj
    七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC
    MVC控件解析
  • 原文地址:https://www.cnblogs.com/lishouguang/p/4560753.html
Copyright © 2020-2023  润新知