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

  • 相关阅读:
    Blue的博客
    透明状态栏和沉浸式状态栏
    Html的label和span的区别
    三个石匠的故事
    OpenSSL 生成自定义证书
    github博客配置
    js作用域其二:预解析
    数据分析常用工具总结
    堆排序
    吴裕雄--天生自然 JAVA开发学习: 循环结构
  • 原文地址:https://www.cnblogs.com/cfox/p/4778758.html
Copyright © 2011-2022 走看看