• hive的排序方式的比较


    • order by :全排序 ,所有的任务分配在一个reduce上面,将会花费大量的时间,可以保证全局有序

    同时还需要设置下面两个参数:

    hive> set sethive.strict.checks.large.query=false;#大规模查询的检查为false
    hive> set hive.mapred.mode=nonstrict;#mapreduce的模式为非严格
    #一部分结果
    1       banan1  12      1
    2       apple1  13      2
    3       banan2  14      3
    4       apple2  15      4
    5       banan3  16      5
    6       apple3  17      6
    7       banan4  18      7
    8       apple4  19      8
    9       banan5  20      9
    10      apple5  21      10
    11      banan6  22      11
    12      apple6  23      12
    13      banan7  24      13
    14      apple7  25      14
    
    
    hive> select * from order_info order by oid;
    #花费时间:Time taken: 158.032 seconds, Fetched: 98 row(s)
    
    • sort by :设置reduce个数。只能保证每个reduce的输出有序,不能保证全局有序
    hive> set mapred.reduce.tasks=3;
    hive> select * from order_info sort by oid;
    #花费时间:Time taken: 78.296 seconds, Fetched: 98 row(s)
    #一部分结果
    5       banan3  16      5
    6       apple3  17      6
    7       banan4  18      7
    8       apple4  19      8
    9       banan5  20      9
    10      apple5  21      10
    15      banan8  26      15
    18      apple9  29      4
    19      banan10 30      5
    22      apple11 33      8
    24      apple12 35      10
    25      banan13 36      11
    30      beer2   22      16
    32      beer4   24      18
    
    • distribute by:一般和sort by联用,并且放在sort by的前面,如果是根据cid进行分组,那么一般都是将同一个客户的订单放在一个reduce里面
    hive> select * from order_info distribute by cid sort by oid desc;
    #一部分数据
    43      beer15  35      21
    40      beer12  32      18
    37      beer9   29      15
    32      beer4   24      18
    29      beer1   21      15
    26      apple13 37      12
    23      banan12 34      9
    20      apple10 31      6
    17      banan9  28      3
    15      banan8  26      15
    12      apple6  23      12
    9       banan5  20      9
    6       apple3  17      6
    
    • cluster by:当distribute by 和sort by的字段一致的时候可以用cluster by代替,但是不能用desc 或者asc
    欢迎关注我的公众号:小秋的博客 CSDN博客:https://blog.csdn.net/xiaoqiu_cr github:https://github.com/crr121 联系邮箱:rongchen633@gmail.com 有什么问题可以给我留言噢~
  • 相关阅读:
    正则表达式
    kafka Auto offset commit faild reblance
    安装包问题
    身份证头像截取
    web表单
    模板与继承与控制语句
    虚拟环境安装及Hello World
    flask入门脚本解释
    python3 邮件发送
    ASP.NET MVC文件上传简单示例
  • 原文地址:https://www.cnblogs.com/flyingcr/p/10326854.html
Copyright © 2020-2023  润新知