1、Hive 内置函数
内容较多,见《Hive 官方文档》:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
2、测试内置函数
快捷方式:
第一种方式:直接使用,例如:select concat(‘a’,‘a’) ----> aa
第二种方式:
(1)创建一个 dual 表 create table dual(id string);
(2)load 一个文件(一行,一个空格)到 dual 表;
(3)select substr(‘huangbo’,2,3) from dual。
3、展示内置函数
(1)查看内置函数:
show functions;
(2)显示函数的详细信息:
desc function abs;
(3)显示函数的扩展信息:
desc function extended concat;
4、内置函数列表
4.1、关系运算
释义 | 关系运算符 |
---|
等值比较 | = |
等值比较 | <=> |
不等值比较 | <>和!= |
小于比较 | < |
小于等于比较 | <= |
大于比较 | > |
大于等于比较 | >= |
空值判断 | IS NULL |
非空判断 | IS NOT NULL |
LIKE 比较 | LIKE |
JAVA 的 LIKE 操作 | RLIKE |
REGEXP 操作 | REGEXP |
4.2、数学运算
释义 | 数学运算符 |
---|
加法操作 | + |
减法操作 | – |
乘法操作 | * |
除法操作 | / |
取余操作 | % |
位与操作 | & |
位或操作 | I |
位异或操作 | ^ |
位取反操作 | ~ |
4.3、逻辑运算
释义 | 逻辑运算符 |
---|
逻辑与操作 | AND 、&& |
逻辑或操作 | OR 、II |
逻辑非操作 | NOT、! |
4.4、复合类型构造函数
map 结构
struct 结构
named_struct 结构
array 结构
create_union
获取 array 中的元素
获取 map 中的元素
获取 struct 中的元素
4.5、数值计算函数
释义 | 数值计算函数 |
---|
取整函数 | round |
指定精度取整函数 | round |
向下取整函数 | floor |
向上取整函数 | ceil |
向上取整函数 | ceiling |
取随机数函数 | rand |
自然指数函数 | exp |
以 10 为底对数函数 | log10 |
以 2 为底对数函数 | log2 |
对数函数 | log |
幂运算函数 | pow |
幂运算函数 | power |
开平方函数 | sqrt |
二进制函数 | bin |
十六进制函数 | hex |
反转十六进制函数 | unhex |
进制转换函数 | conv |
绝对值函数 | abs |
正取余函数 | pmod |
正弦函数 | sin |
反正弦函数 | asin |
余弦函数 | cos |
反余弦函数 | acos |
positive 函数 | positive |
negative 函数 | negative |
4.6、集合操作函数
释义 | 集合操作函数 |
---|
求 map 类型的长度 | size(map) |
求 array 类型的大小 | size(array) |
判断元素数组是否包含元素 “test” | array_contains(array, “test”) |
获取 map 中所有 value 集合,结果为数组 | map_values(map) |
获取 map 中所有 key 集合,结果为数组 | map_keys(map) |
数组排序 | sort_array(array) |
4.7、类型转换函数
释义 | 类型转换函数 |
---|
二进制转换 | binary |
基础类型之间强制转换 | cast |
4.8、日期函数
释义 | 日期函数 |
---|
UNIX 时间戳转日期函数 | from_unixtime |
获取当前 UNIX 时间戳函数 | unix_timestamp |
日期转 UNIX 时间戳函数 | unix_timestamp |
指定格式日期转 UNIX 时间戳函数 | unix_timestamp |
日期时间转日期函数 | to_date |
日期转年函数 | year |
日期转月函数 | month |
日期转天函数 | day |
日期转小时函数 | hour |
日期转分钟函数 | minute |
日期转秒函数 | second |
日期转周函数 | weekofyear |
日期比较函数 | datediff |
日期增加函数 | date_add |
日期减少函数 | date_sub |
4.9、条件函数
释义 | 条件函数 |
---|
If 函数 | if |
非空查找函数 | COALESCE |
条件判断函数 | CASE |
4.10、字符串函数
释义 | 字符串函数 |
---|
字符 ascii 码函数 | ascii |
字符串连接函数 | concat |
带分隔符字符串连接函数 | concat_ws |
数组转换成字符串的函数 | concat_ws |
小数位格式化成字符串函数 | format_number |
字符串截取函数 | substr,substring |
字符串截取函数 | substr,substring |
字符串查找函数 | instr |
字符串长度函数 | length |
字符串查找函数 | locate |
字符串格式化函数 | printf |
字符串转换成 map 函数 | str_to_map |
base64 字符串 | base64(string str) |
base64 解码函数 | unbase64(string str) |
字符串转大写函数 | upper,ucase |
字符串转小写函数 | lower,lcase |
去空格函数 | trim |
左边去空格函数 | ltrim |
右边去空格函数 | rtrim |
正则表达式替换函数 | regexp_replace |
正则表达式解析函数 | regexp_extract |
URL 解析函数 | parse_url |
json 解析函数 | get_json_object |
空格字符串函数 | space |
重复字符串函数 | repeat |
左补足函数 | lpad |
右补足函数 | rpad |
分割字符串函数 | split |
集合查找函数 | find_in_set |
分词函数,分词后统计一起出现频次最高的 TOP-K,分词后统计与指定单词一起出现频次最高的 TOP-K | sentences |
4.11、混合函数
释义 | 混合函数 |
---|
调用 Java 函数 | java_method |
调用 Java 函数 | reflect |
字符串的 hash 值 | hash |
4.12、XPath 解析 XML 函数
(1)xpath
(2)xpath_string
(3)xpath_boolean
(4)xpath_short, xpath_int, xpath_long
(5)xpath_float, xpath_double, xpath_number
4.13、汇总统计函数(UDAF)
释义 | 汇总统计函数 |
---|
个数统计函数 | count |
总和统计函数 | sum |
平均值统计函数 | avg |
最小值统计函数 | min |
最大值统计函数 | max |
非空集合总体变量函数 | var_pop |
非空集合样本变量函数 | var_samp |
总体标准偏离函数 | stddev_pop |
样本标准偏离函数 | stddev_samp |
中位数函数 | percentile |
中位数函数 | percentile |
近似中位数函数 | percentile_approx |
近似中位数函数 | percentile_approx |
直方图 | histogram_numeric |
集合去重数 | collect_set |
集合不去重函数 | collect_list |
4.14、表格生成函数 Table-Generating Functions (UDTF)
释义 | 表格生成函数 |
---|
数组拆分成多行 | explode(array) |
Map 拆分成多行 | explode(map) |
5、学习内容
上节学习内容:Hive 高级操作(二)之视图
下节学习内容:Hive 高级操作(四)之 Hive 自定义函数 UDF