Hive 运算符与函数操作

一、 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中使用定义的函数的三种方式

  1. 在Hive会话中add 自定义函数的jar文件,然后创建function,继而使用函数。
  2. 在进入HIVE会话之前先自动执行创建function,而不用手工创建。
  3. 把自定义的函数写到系统函数中,使之成为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三个方法。

以上详细用法等用到时再补充。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程圈子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值