[Hive]-函数篇

Posted nightpxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Hive]-函数篇相关的知识,希望对你有一定的参考价值。

1.函数分类

2.操作符

  A = B(等价A == B)  值相等

  A <==> B  Equals(两个同时为Null为真,只有一个Null为假,否则Equals)

  A <>B(等价A!=B) 不等于(同Null为假,只有一个NUll为真,否则Equals取反)

  A [NOT] BETWEEN B AND C   [B,C]A是否在B,C之间(包含边界B,C)

  A IS [NOT]  NULL  A是否为Null

  A [NOT] LIKE B 同mysql Like操作符

  A RLIKE B (等价A REGEXP B)   模糊匹配(正则)

  A DIV B A除以B的整数部分(小数直接摄取)

3.复杂对象

  map(key1, value1, key2, value2, ...)  用指定的键值创建一个Map对象

  struct(val1, val2, val3, ...) 用指定的值创建一个struct对象,字段名依次为col1.col2.....

  named_struct(name1, val1, name2, val2, ...) 用指定的字段名,字段值创建一个struct对象

  array(val1, val2, ...)  用指定的值创建一个array对象

  create_union(tag, val1, val2, ...)  使用标记参数指向的值创建一个联合类型

  

  A[n] 获取数组对象A下标为n的值

  M[key] 获取键值对对象M的键为key的值

  S.x  获取结构体S的字段x的值

 

  size(Map<K.V>) size(Array<T>) 返回Map或数组的元素个数

  map_keys(Map<K.V>)  返回Map的键数组对象

  map_values(Map<K.V>)  返回Map的值数组对象

  array_contains(Array<T>, value) 返回Map是否包含指定的值

  sort_array(Array<T>) 数组排序(升序)

4.UDF函数

  4.1 数学函数

    round(DOUBLE a)  返回a的四舍五入的值

    round(DOUBLE a, INT d) 返回a四舍五入保留d位小数的值

    bround(DOUBLE a [, INT d]) 返回a的高斯四舍五入的值

    floor(DOUBLE a) 返回a向上取整的值

    ceil(DOUBLE a), ceiling(DOUBLE a) 返回a向下取整的值

    rand(), rand(INT seed) 返回一个随机数

    greatest(T v1, T v2, ...) 返回指定值中最大的值

    least(T v1, T v2, ...) 返回指定值中最小的值

    更多数学函数见官网 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

  4.2 类型转换函数

    cast(expr as <type>) 将 expr转换为<type>类型

  4.3 日期函数

    from_unixtime(bigint unixtime[, string format]) 将一个时间戳转换为指定格式的字符串,默认(yyyy-MM-dd)

    unix_timestamp() 获取当前时间时间戳(秒)

    unix_timestamp(string date [, string pattern]) 将一个pattern格式(默认yyyy-MM-dd hh:mm:ss)的字符串转换为时间戳

    to_date(string timestamp) 将一个时间戳转换为yyyy-MM-dd

 

    quarter(date/timestamp/string)  返回日期、时间戳或范围为1到4的字符串的季度

    year(string date) 返回字符串日期的年 year("1970-01-01 00:00:00") = 1970, year("1970-01-01") = 1970

    month(string date)  返回字符串日期的月

    day(string date) dayofmonth(date) 返回字符串日期的天

    hour(string date) 返回字符串日期的小时

    minute(string date) 返回字符串日期的分钟

    second(string date) 返回字符串日期的秒

    weekofyear(string date)返回字符串日期的星期几

    extract(field FROM source) 从时间source中提取属性信息

                select extract(month from "2016-10-20") results in 10.

                select extract(hour from "2016-10-20 05:06:07") results in 5.

                select extract(dayofweek from "2016-10-20 05:06:07") results in 5.

                select extract(month from interval ‘1-3‘ year to month) results in 3.

                select extract(minute from interval ‘3 12:20:30‘ day to second) results in 20.

以上是关于[Hive]-函数篇的主要内容,如果未能解决你的问题,请参考以下文章

Hive函数(UDF篇)

[Hive]-函数篇

Hive UDF 第一篇:怎么实现自己的 hive 自定义函数

如何在Hive&Impala中使用UDF

0011-如何在Hive & Impala中使用UDF

Hive3.1.2自带的系统函数及UDF的随系统自动注册