本篇开始进入Hive进阶篇的总结,进阶篇计划介绍Hive的各类函数以及调优。在入门篇(十五)曾总结过一些常用的聚合函数,剩余的不常用聚合函数后续在进阶篇中也会逐步介绍。本篇博客主要总结Hive中的常用的数学函数。
返回数值类型 | 函数名\所需参数\参数数据类型 | 描述 |
DOUBLE |
round(DOUBLE a) |
返回对a四舍五入的整数值 |
DOUBLE |
round(DOUBLE a, INT d) |
返回保留d位小数的DOUBLE型的近似值 |
BIGINT |
floor(DOUBLE a) |
向下取整 如:6.10->6 -3.4->-4 |
BIGINT |
ceil(DOUBLE a), ceiling(DOUBLE a) |
向上取整 |
DOUBLE |
rand(), rand(INT seed) |
每行返回一个DOUBLE型随机数,seed是随机种子 |
DOUBLE |
pow(DOUBLE a, DOUBLE p), power(DOUBLE a, DOUBLE p) |
计算a的p次幂 |
DOUBLE |
sqrt(DOUBLE a) |
计算a的平方根 |
DOUBLE |
abs(DOUBLE a) |
计算a的绝对值 |
DOUBLE |
sin(DOUBLE a) |
计算a的正弦值 |
DOUBLE |
asin(DOUBLE a) |
计算a的反正弦值 |
DOUBLE |
cos(DOUBLE a) |
计算a的余弦值 |
DOUBLE |
acos(DOUBLE a) |
计算a的反余弦值 |
DOUBLE |
tan(DOUBLE a) |
计算a的正切值 |
DOUBLE |
atan(DOUBLE a) |
计算a的反正切值 |
INT or DOUBLE |
negative(INT a), negative(DOUBLE a) |
计算a的相反数 |
DOUBLE or INT |
sign(DOUBLE a) |
如果a是正数则返回1.0,是负数则返回-1.0,否则返回0.0 |
DOUBLE |
e() |
数学常数e |
DOUBLE |
pi() |
数学常数pi,3.1415926…… |
BIGINT | factorial(INT a) | 计算a的阶乘,Hive1.2.0后才有 |
DOUBLE | cbrt(DOUBLE a) | 计算a的立方根,Hive1.2.0后才有 |
DOUBLE |
exp(DOUBLE a) |
计算e的a幂次方, a可为小数 |
DOUBLE |
ln(DOUBLE a) |
计算以e为底的对数,a可为小数 |
DOUBLE |
log10(DOUBLE a) |
计算以10为底的对数,a可为小数 |
DOUBLE |
log2(DOUBLE a) |
计算以2为底数的对数,a可为小数 |
DOUBLE |
log(DOUBLE base, DOUBLE a) |
计算以base为底的对数,base 与 a都是DOUBLE类型 |
所有的函数所传的参数都可以是字段或者自定义的数据,这里为了演示方便,统一使用自定义数据。
round(DOUBLE a)
功能:传入DOUBLE类型的参数a,返回对a四舍五入的整数值,但返回的数据类型是DOUBLE,所以会有 .0
hive (app)> select round(2.5);
3.0
hive (app)> select round(2.2);
2.0
round(DOUBLE a,INT d)
功能:传入DOUBLE类型的参数a,INT类型的参数d,返回保留d位小数的DOUBLE型的近似值
hive (app)> select round(2.234,2);
2.23
hive (app)> select round(2.235,2);
2.24
floor(DOUBLE a)
功能:传入DOUBLE类型的参数a,返回<=a的最大的BIGINT型整数
hive (app)> select floor(2.2);
2
hive (app)> select floor(2.9);
2
ceil(DOUBLE a)
ceiling(DOUBLE a)
功能:传入DOUBLE类型的参数a,返回>=a的最小的BIGINT型整数
hive (app)> select ceil(2.9);
3
hive (app)> select ceil(2.1);
3
hive (app)> select ceiling(2.9);
3
hive (app)> select ceiling(2.1);
3
rand()
rand(INT seed)
功能:每行返回一个DOUBLE型随机数,seed是随机种子,设置seed可以使生成的随机数固定,否则每次生成的随机数是不同的。
hive (app)> select rand();
0.6856598085583834
hive (app)> select rand();
0.5677221950777468
hive (app)> select rand(1);
0.7308781907032909
hive (app)> select rand(1);
0.7308781907032909
pow(DOUBLE a, DOUBLE n)
功能:传入DOUBLE类型的参数a和n(整型会被自动转为DOUBLE),返回DOUBLE类型的a的n次幂
hive (app)> select pow(2,3);
8.0
sqrt(DOUBLE a)
功能:传入DOUBLE类型的参数a(整型会被自动转为DOUBLE),返回DOUBLE类型的a的平方根
hive (app)> select sqrt(4);
2.0
hive (app)> select sqrt(9);
3.0
abs(DOUBLE a)
功能:传入DOUBLE类型的参数a(整型会被自动转为DOUBLE),返回DOUBLE类型的a的绝对值
hive (app)> select abs(-2);
2
能看到这里的同学,就右上角点个赞吧,3Q~