0
点赞
收藏
分享

微信扫一扫

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 条评论