文章目录
Hive系列文章
Hive系列 (八):Hive中的explode 与 lateral view
常用函数介绍
Hive常用函数比较多,随用随查,官方文档
大概整理如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yvY92GE2-1630478811346)(C:\Users\EricR\Desktop\Hive常用函数.png)]
Hive内置函数
查看系统自带函数
0: jdbc:hive2://master:10000> use myhive;
OK
No rows affected (2.364 seconds)
0: jdbc:hive2://master:10000> show functions;
OK
+------------------------------+
| tab_name |
+------------------------------+
| ! |
| != |
| $sum0 |
| % |
| & |
| * |
| + |
| - |
| / |
| < |
| <= |
| <=> |
显示自带函数用法
0: jdbc:hive2://master:10000> desc function max;
OK
+------------------------------------------------+
| tab_name |
+------------------------------------------------+
| max(expr) - Returns the maximum value of expr |
+------------------------------------------------+
1 row selected (0.089 seconds)
0: jdbc:hive2://master:10000> desc function upper;
OK
+----------------------------------------------------+
| tab_name |
+----------------------------------------------------+
| upper(str) - Returns str with all characters changed to uppercase |
+----------------------------------------------------+
1 row selected (0.037 seconds)
0: jdbc:hive2://master:10000>
显示自带函数的详细用法
0: jdbc:hive2://master:10000> desc function extended upper;
OK
+----------------------------------------------------+
| tab_name |
+----------------------------------------------------+
| upper(str) - Returns str with all characters changed to uppercase |
| Synonyms: ucase |
| Example: |
| > SELECT upper('Facebook') FROM src LIMIT 1; |
| 'FACEBOOK' |
| Function class:org.apache.hadoop.hive.ql.udf.generic.GenericUDFUpper |
| Function type:BUILTIN |
+----------------------------------------------------+
关系运算
关系运算 | 语法 | 操作类型 | 描述 |
---|---|---|---|
等值比较:= | A = B | 所有基本类型 | 如果表达式A与表达式B相等,则为true;否则为false |
不等值比较: <> | A <> B | 所有基本类型 | 如果表达式A为null,或者表达式B为null,返回null;如果表达式A与表达式B不相等,则为true;否则为false |
小于比较: < | A < B | 所有基本类型 | 如果表达式A为null,或者表达式B为null,返回null;如果表达式A小于表达式B,则为true;否则为false |
小于等于比较: <= | A <= B | 所有基本类型 | 如果表达式A为null,或者表达式B为null,返回null;如果表达式A小于或者等于表达式B,则为true;否则为false |
大于比较: > | A > B | 所有基本类型 | 如果表达式A为null,或者表达式B为null,返回null;如果表达式A大于表达式B,则为true;否则为false |
大于等于比较: >= | A >= B | 所有基本类型 | 如果表达式A为null,或者表达式B为null,返回null;如果表达式A大于或者等于表达式B,则为true;否则为false |
空值判断: is null | A is null | 所有基本类型 | 如果表达式A的值为null,则为true;否则为false |
非空判断: is not null | A is not null | 所有基本类型 | 如果表达式A的值为null,则为false;否则为true |
LIKE比较 | A LIKE B | strings | 如果字符串A或者字符串B为null,则返回null;如果字符串A符合表达式B 的正则语法,则为true;否则为false。B中字符”_”表示任意单个字符,而字符”%”表示任意数量的字符。 |
REGEXP操作 | A REGEXP B | strings | 如果字符串A或者字符串B为null,则返回null;如果字符串A符合JAVA正则表达式B的正则语法,则为true;否则为false |
RLIKE比较 | A RLIKE B | strings | 功能与REGEXP相同 |
数学运算
数学运算 | 语法 | 操做类型 | 描述 |
---|---|---|---|
加法: + | A + B | 所有数值类型 | 返回A与B相加的结果 |
减 法: - | A – B | 所有数值类型 | 返回A与B相减的结果 |
乘法: * | A * B | 所有数值类型 | 返回A与B相乘的结果。注意,如果A乘以B的结果超过默认结果类型的数值范围, 则需要通过cast将结果转换成范围更大的数值类型 |
除法: / | A / B | 所有数值类型 | 返回A除以B的结果 |
取余: % | A % B | 所有数值类型 | 返回A除以B的余数 |
位与: & | A & B | 所有数值类型 | 返回A和B按位进行与操作的结果 |
位或: | | A |B | 所有数值类型 | 返回A和B按位进行或操作的结果 |
位异或: ^ | A ^ B | 所有数值类型 | 返回A和B按位进行异或操作的结果 |
位取反: ~ | ~A | 所有数值类型 | 返回A按位取反操作的结果 |
逻辑运算
逻辑运算 | 语法 | 操做类型 | 描述 |
---|---|---|---|
逻辑与: AND | A AND B | boolean | 如果A和B均为true,则为true;否则为false。如果A为null或B为null,则为null |
逻辑或: OR | A OR B | boolean | 如果A为true,或者B为true,或者A和B均为true,则为true;否则为false |
逻辑非: NOT | NOT A | boolean | 如果A为false,或者A为null,则为true;否则为false |
数值运算
数值运算 | 语法 | 返回值 | 描述 |
---|---|---|---|
取整函数: round | round(double a) | bigint | 返回double类型的整数值部分 (四舍五入) |
指定精度: round | round(double a, int d) | double | 返回指定精度d的double类型 |
向下取整: floor | floor(double a) | bigint | 返回等于或小于该double变量的最大的整数 |
向上取整: ceil | ceil(double a) | bigint | 返回等于或大于该double变量的最小的整数 |
向上取整: ceiling | ceiling(double a) | bigint | 同ceil |
取随机数: rand | rand(),rand(int seed) | double | 返回一个0到1范围内的随机数。如果指定种子seed,则会等到一个稳定的随机数序列 |
自然指数: exp | exp(double a) | double | 返回自然对数e的a次方 |
幂运算: pow | pow(double a, double p) | double | 返回a的p次幂 |
开平方: sqrt | sqrt(double a) | double | 返回a的平方根 |
二进制: bin | bin(bigint a) | string | 返回a的二进制代码表示 |
绝对值: abs | abs(double a) | double | 返回数值a的绝对值 |
positive函数 | positive(int a) | int | 返回a, 参数可以是算数表达式positive(a+b) |
negative函数 | negative(int a) | int | 返回-a,参数可以是算数表达式negative(a-b) |
日期函数
时间戳转日期
语法: from_unixtime(bigint unixtime[, string format])
返回值: string
说明: 转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式
示例:
0: jdbc:hive2://master:10000> select from_unixtime(1630386807,'yyy