一、 Hive运算符
1. 关系运算符
- 常见的= <> < > <= >=
- 空值判断 IS NULL
- 非空判断 IS NOT NULL
- LIKE LIKE
- JAVA的LIKE操作 RLIKE
- REGEXP操作 REGEXP
示例:
hive> select 1 from dual where 1=1;
2. 逻辑运算符
+ - * / %
& 位与
| 位或
^ 位异或
~ 位取反
逻辑运算符: AND OR NOT
二、 Hive函数操作
1.标准函数
(1)数值运算
- 取整:round
- 指定精度取整:round
- 向下取整:floor
- 向上取整:ceil ceiling
- 随机数:rand
- 自然指数:exp
- log10:
- log2:
- 对数:log
- 幂运算符:pow power
- 开平方:sqrt
- 二进制:bin
- 十六进制:hex
- 反转十六进制:unhex
- 进制转换:conv
- 绝对值:abs
- 正取余:pmod
- 正弦:sin
- 反正弦:asin
- 余弦:cos
- 反余弦:acos
- positive:?
- negative:?
(2)日期函数
- unix时间戳转日期:fom_unixtime
- 获取当前unix 时间戳:unix_timestamp
- 日期转unix时间戳:unix_timestamp
- 指定格式日期转unix时间戳:unix_timestamp
- 日期时间转日期:to_date
- 日期转年等:year month day hour minute second weekofyear
- 日期比较:date_add
- 日期增加:date_add
- 日期减少:date_sub
(3)字符串函数
- 长度:length
- 反转:reverse
- 连接:concat
- 带分隔符字符串连接函数:concat_ws
- 字符串截取函数:substr,substring
- 转大写:upper ucase
- 转小写:lower lcase
- 去空格:trim ltrim rtrim
- 正则表达式替换函数:regexp_replace
- 正则表达式解析函数:regexp_extract
函数描述:
regexp_extract(str, regexp[, idx]) - extracts a group that matches regexp
参数解释*
str是被解析的字符串
regexp 是正则表达式
idx是返回结果 取表达式的哪一部分 默认值为1。
0表示把整个正则表达式对应的结果全部返回
1表示返回正则表达式中第一个() 对应的结果 以此类推 - URL解析函数:parse_url
- json:get_json_object
- 空格:space
- 重复字符串:repeat
- 首字符ascii:ascii
- 左补足:lpad
- 右补足:rpad
- 分割字符串:split
- 集合查找:find_in_set
(4)复合类型
- Map
- Struct
- array
(5)复杂类型访问与计算长度
- array: A[n]
- map: M[key]
- struct:S.x
长度:size(A)
(6)类型转换
- cast:
2.聚合函数
- sum(col)
- avg(col)
- max(col)
- std(col)等
3.表生成函数
表生成函数接收0个或多个输入,产生多列或多行输出,典型的有explode(Array a),如:
SELECT EXPLODE (ARRAY("a","b","c")) AS s FROM test;
explode函数将数组的每一个元素生成新的一行。
三、自定义函数
自定义函数包括三种:UDF标准函数、UADF聚合函数、UDTF表生成函数。
用户自定义函数必须使用Java编写。
HIVE中使用定义的函数的三种方式
- 在Hive会话中add 自定义函数的jar文件,然后创建function,继而使用函数。
- 在进入HIVE会话之前先自动执行创建function,而不用手工创建。
- 把自定义的函数写到系统函数中,使之成为HIVE的一个默认函数,这样就不需要create temporary function。
1.UDF
需要继承org.apache.hadoop.hive.ql.exec.UDF,并实现evaluate函数。
2.UDAF
需要继承org.apache.hadoop.hive.ql.exec.UDAF类
3.UDTF
需要继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF并实现initialize,process,close三个方法。
以上详细用法等用到时再补充。