Hive函数总结

查找系统自带函数:

  show functions;

排序:

ORDER BY : 

  全局排序,只有一个reducer,

  ASC(ascend)升序(默认);

  DESC(descend)降序

SORT BY : 

  每个MapReduce内部排序

  对于大规模的数据集 order by 的效率非常低,在很多情况下,并不需要全局排序,这时就可以使用 sort by

DISTRIBUTE BY:

  分区排序

系统内置函数

  查看系统自带的函数:show functions;

  显示自带的函数的用法:desc functions 方法名;

  详细显示自带的函数的用法:desc functions extended 方法名;

 

常用内置函数:

空字段赋值:

  NVL: 给值为Null的数据赋值,它的格式是NVL(value , default_value)。它的功能是如果value为NULL,则NVL函数返回default_value的值,否则返回value的值,如果两个参数都为NULL ,则返回NULL。

行转列

CONCAT(string A/col , string B/col ...): 返回输入字符串连接后的结果,支持任意个输入字符串;

 将两个字段以 ,进行连接返回一个字段以base为字段名输出:

 CONCAT_WS(separator, str1, str2,...):它是一个特殊形式的 CONCAT()。第一个参数剩余参数间的分隔符。分隔符可以是与剩余参数一样的字符串。如果分隔符是 NULL,返回值也将为 NULL。这个函数会跳过分隔符参数后的任何 NULL 和空字符串。分隔符将被加到被连接的字符串之间;

 

COLLECT_SET(col):函数只接受基本数据类型,它的主要作用是将某字段的值进行去重汇总,产生array类型字段。

select

    t1.base,

    concat_ws('|', collect_set(t1.name)) name

from

    (select

        name,

        concat(constellation, ",", blood_type) base

    from

        person_info) t1

group by

    t1.base;

列转行

EXPLODE(col):将hive一列中复杂的array或者map结构拆分成多行。

LATERAL VIEW

用法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias

建表:

create table movie_info(

    movie string,

    category string)

row format delimited fields terminated by "\t";

load data local inpath "/opt/module/datas/movie.txt" into table movie_info;加载数据

查询用法:

select  m.movie, tbl.cate from movie_info m

lateral view

    explode(split(category, ",")) tbl as cate;

窗口函数:

OVER():指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变而变化。

CURRENT ROW:当前行

n PRECEDING:往前n行数据

n FOLLOWING:往后n行数据

UNBOUNDED:起点,UNBOUNDED PRECEDING 表示从前面的起点, UNBOUNDED FOLLOWING表示到后面的终点

LAG(col,n,default_val):往前第n行数据

LEAD(col,n, default_val):往后第n行数据

NTILE(n):把有序窗口的行分发到指定数据的组中,各个组有编号,编号从1开始,对于每一行,NTILE返回此行所属的组的编号。注意:n必须为int类型。

Rank:

RANK() 排序相同时会重复,总数不会变

DENSE_RANK() 排序相同时会重复,总数会减少

ROW_NUMBER() 会根据顺序计算

自定义函数:

1)Hive 自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便的扩展。

2)当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function)。

3)根据用户自定义函数类别分为以下三种:

(1)UDF(User-Defined-Function)

         一进一出

(2)UDAF(User-Defined Aggregation Function)

         聚集函数,多进一出

         类似于:count/max/min

(3)UDTF(User-Defined Table-Generating Functions)

         一进多出

         如lateral view explore()

 

 

 

posted @ 2020-11-25 20:36  sycl  阅读(122)  评论(0编辑  收藏  举报