zoukankan      html  css  js  c++  java
  • Hive语法手册

    Hive语法

    Order By语法

    Order By语法

    colOrder: ( ASC | DESC )
    orderBy: ORDER BY colName colOrder? (',' colName colOrder?)*
    query: SELECT expression (',' expression)* FROM src orderBy

    在使用"order by"是有一些限制,在限制模式(例如:hive.mapred.mode=strict), order by 后必须加油"limit"条件.

    如果设置hive.mapred.mode为nonstrict就可以不加limit条件。原因是为了强制排序所有结果,只能有一个reducer来排序最后的输出。如果要排序的行数过大,单个reducer将花费很长时间才能完成。

    注意:列是通过字段名指定, 而不是位置数。 但是在 Hive 0.11.0版本及之后, 如果设置hive.groupby.orderby.position.alias为true(默认值为false) 列可以通过位置指定。

    Sort By语法

    colOrder: ( ASC | DESC )
    sortBy: SORT BY colName colOrder? (',' colName colOrder?)*
    query: SELECT expression (',' expression)* FROM src sortBy

     Hive使用SORT BY在将数据给reducer之前对列进行排序。排序的顺序讲根据字段类型。如果字段为numeric那么将根据数字进行排序,如果字段为string类型,那么将根据字典顺序排序。

    Sort By和Order By的不同点

    Hive支持SORT BY在每个reducer中的数据进行排序。"order by" 和 "sort by"不同点在于前者保证全局排序,后者仅仅保证在一个reducer内的排序。如果有多个reducer那么 "sort by"可能给出部分最终排序结果

    如下例子:

    SELECT key, value FROM src SORT BY key ASC, value DESC

    这个查询有两个reducer, 输出结果如下

    -- reducer one
    0   5
    0   3
    3   6
    9   1
    
    -- reducer two
    0   4
    0   3
    1   1
    2   5

    Cluster By 和 Distribute By 语法

    Cluster By 和 Distribute By 主要用于 Transform/Map-Reduce Scripts.但是有时在一些select中需要分区和排序输出子查询的时候也非常有用。

    Cluster By 是 Distribute By 和 Sort By一起使用的快捷语句。

    Hive使用Distribute By对列进行分发到reducer。所有的相同列值的数据将会分发同一个reducer中。但是Distribute By

    例如,我们使用Distributing By x对如下的5行数据分配导2个reducer:

    x1
    x2
    x4
    x3
    x1

    结果为:

    -- reducer 1
    x1
    x2
    x1
    
    -- reducer 2
    x4
    x3

    对应的,如果我们使用Cluster By,两个reducer将会有如下结果:

    -- reducer 1
    x1
    x1
    x2
    
    -- reducer 2
    x3
    x4

      

    参考源地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

                      https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy

  • 相关阅读:
    Top 10 Product Manager Skills To Boost Your Resume In 2021
    大数据知识梳理
    B端产品如何设计权限系统?
    华三盒式交换机MAC、ARP、Route性能表项参数查询
    中了传说中的挖矿病毒
    SqlServer 2019 事务日志传送
    docker中生成的pdf中文是方框的解决方案
    The Live Editor is unable to run in the current system configuration
    2021 面试题大纲
    五分钟搞定Docker安装ElasticSearch
  • 原文地址:https://www.cnblogs.com/cfox/p/4778758.html
Copyright © 2011-2022 走看看