ITPub博客

首页 > 大数据 > Hadoop > hive常用函数

hive常用函数

原创 Hadoop 作者:liuhongwei 时间:2021-03-15 09:16:57 0 删除 编辑

1、日期函数

1、to_date:日期时间转日期函数 
select to_date('2015-04-02 13:34:12'); 
输出:2015-04-02

2、from_unixtime:转化unix时间戳到当前时区的时间格式 
select from_unixtime(1323308943,’yyyyMMdd’); 
输出:20111208

3、unix_timestamp:获取当前unix时间戳 
select unix_timestamp(); 
输出:1430816254

4、select unix_timestamp('2015-04-30 13:51:20'); 
输出:1430373080

5、year:返回日期中的年 
select year('2015-04-02 11:32:12'); 
输出:2015

6、month:返回日期中的月份 
select month('2015-12-02 11:32:12'); 
输出:12

7、day:返回日期中的天 
select day('2015-04-13 11:32:12'); 
输出:13

8、hour:返回日期中的小时 
select hour('2015-04-13 11:32:12'); 
输出:11

9、minute:返回日期中的分钟 
select minute('2015-04-13 11:32:12'); 
输出:32

10、second:返回日期中的秒 
select second('2015-04-13 11:32:56'); 
输出:56

11、weekofyear:返回日期在当前周数 
select weekofyear('2015-05-05 12:11:1'); 
输出:19

12、datediff:返回开始日期减去结束日期的天数 
select datediff('2015-04-09','2015-04-01'); 
输出:8

13、date_sub:返回日期前n天的日期 
select date_sub('2015-04-09',4); 
输出:2015-04-05

14、date_add:返回日期后n天的日期 
select date_add('2015-04-09',4); 
输出:2015-04-13

2、字符串相关

1、字符串长度函数:length 
语法: length(string A) 
返回值: int 
说明:返回字符串A的长度 
举例: 
hive> select length(‘abcedfg’) from dual;

2、字符串反转函数:reverse 
语法: reverse(string A) 
返回值: string 
说明:返回字符串A的反转结果 
举例: 
hive> select reverse(‘abcedfg’) from dual; 
gfdecba

3、字符串连接函数:concat 
语法: concat(string A, string B…) 
返回值: string 
说明:返回输入字符串连接后的结果,支持任意个输入字符串 
举例: 
hive> select concat(‘abc’,'def’,'gh’) from dual; 
abcdefgh

4、带分隔符字符串连接函数:concat_ws 
语法: concat_ws(string SEP, string A, string B…) 
返回值: string 
说明:返回输入字符串连接后的结果,SEP表示各个字符串间的分隔符 
举例: 
hive> select concat_ws(',','abc','def','gh') from dual; 
abc,def,gh

5、字符串截取函数:substr,substring 
语法: substr(string A, int start),substring(string A, int start) 
返回值: string 
说明:返回字符串A从start位置到结尾的字符串 
举例: 
hive> select substr('abcde',3) from dual; 
cde 
hive> select substring(‘abcde’,3) from dual; 
cde 
hive> select substr(‘abcde’,-1) from dual; (和ORACLE相同) 
e

6、字符串转大写函数:upper,ucase 
语法: upper(string A) ucase(string A) 
返回值: string 
说明:返回字符串A的大写格式 
举例: 
hive> select upper(‘abSEd’) from dual; 
ABSED 
hive> select ucase(‘abSEd’) from dual; 
ABSED

7、字符串转小写函数:lower,lcase 
语法: lower(string A) lcase(string A) 
返回值: string 
说明:返回字符串A的小写格式 
举例: 
hive> select lower(‘abSEd’) from dual; 
absed 
hive> select lcase(‘abSEd’) from dual; 
absed

8、去空格函数:trim 
语法: trim(string A) 
返回值: string 
说明:去除字符串两边的空格 
举例: 
hive> select trim(‘ abc ‘) from dual; 
abc

9、左边去空格函数:ltrim 
语法: ltrim(string A) 
返回值: string 
说明:去除字符串左边的空格 
举例: 
hive> select ltrim(‘ abc ‘) from dual; 
abc

10、右边去空格函数:rtrim 
语法: rtrim(string A) 
返回值: string 
说明:去除字符串右边的空格 
举例: 
hive> select rtrim(‘ abc ‘) from dual; 
abc

11、正则表达式替换函数:regexp_replace 
语法: regexp_replace(string A, string B, string C) 
返回值: string 
说明:将字符串A中的符合java正则表达式B的部分替换为C。注意,在有些情况下要使用转义字符 
举例: 
hive> select regexp_replace(‘foobar’, ‘oo|ar’, ”) from dual; 
fb

12、正则表达式解析函数:regexp_extract 
语法: regexp_extract(string subject, string pattern, int index) 
返回值: string 
说明:将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。注意,在有些情况下要使用转义字符 
举例: 
hive> select regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 1) from dual; 
the 
hive> select regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 2) from dual; 
bar 
hive> select regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 0) from dual; 
foothebar

13、URL解析函数:parse_url 
语法: parse_url(string urlString, string partToExtract [, string keyToExtract]) 
返回值: string 
说明:返回URL中指定的部分。partToExtract的有效值为:HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO. 
举例: 
hive> select parse_url(‘ , ‘HOST’) from dual; 
 
hive> select parse_url(‘ , ‘QUERY’, ‘k1′) from dual; 
v1

14、json解析函数:get_json_object 
语法: get_json_object(string json_string, string path) 
返回值: string 
说明:解析json的字符串json_string,返回path指定的内容。如果输入的json字符串无效,那么返回NULL。 
举例: 
hive> select get_json_object(‘{“store”: 
> {“fruit”:\[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}], 
> “bicycle”:{“price”:19.95,”color”:”red”} 
> }, 
> “email”:”amy@ ”, 
> “owner”:”amy” 
> } 
> ‘,’$.owner’) from dual; 
amy

15、空格字符串函数:space 
语法: space(int n) 
返回值: string 
说明:返回长度为n的字符串 
举例: 
hive> select space(10) from dual; 
hive> select length(space(10)) from dual; 
10

16、重复字符串函数:repeat 
语法: repeat(string str, int n) 
返回值: string 
说明:返回重复n次后的str字符串 
举例: 
hive> select repeat(‘abc’,5) from dual; 
abcabcabcabcabc

17、首字符ascii函数:ascii 
语法: ascii(string str) 
返回值: int 
说明:返回字符串str第一个字符的ascii码 
举例: 
hive> select ascii(‘abcde’) from dual; 
97

18、左补足函数:lpad 
语法: lpad(string str, int len, string pad) 
返回值: string 
说明:将str进行用pad进行左补足到len位 
举例: 
hive> select lpad(‘abc’,10,’td’) from dual; 
tdtdtdtabc 
与GP,ORACLE不同,pad 不能默认

19、右补足函数:rpad 
语法: rpad(string str, int len, string pad) 
返回值: string 
说明:将str进行用pad进行右补足到len位 
举例: 
hive> select rpad(‘abc’,10,’td’) from dual; 
abctdtdtdt

20、分割字符串函数: split 
语法: split(string str, string pat) 
返回值: array 
说明: 按照pat字符串分割str,会返回分割后的字符串数组 
举例: 
hive> select split(‘abtcdtef’,'t’) from dual; 
["ab","cd","ef"]

集合查找函数: find_in_set 
语法: find_in_set(string str, string strList) 
返回值: int 
说明: 返回str在strlist第一次出现的位置,strlist是用逗号分割的字符串。如果没有找该str字符,则返回0 
举例: 
hive> select find_in_set(‘ab’,'ef,ab,de’) from dual; 
2 
hive> select find_in_set(‘at’,'ef,ab,de’) from dual;

3、正则相关

1.regexp_extract(str, regexp[, idx]) - extracts a group that matches regexp 
. 字符串正则表达式解析函数。 
. -- 这个函数有点类似于 substring(str from 'regexp') .. 
. 参数解释: 
. 其中: 
. str是被解析的字符串 
. regexp 是正则表达式 
. idx是返回结果 取表达式的哪一部分 默认值为1。 
. 0表示把整个正则表达式对应的结果全部返回 
. 1表示返回正则表达式中第一个() 对应的结果 以此类推 
. 注意点: 
. 要注意的是idx的数字不能大于表达式中()的个数。 
. 否则报错: 
. 实例: 
. 如: 
. select regexp_extract('x=a3&x=18abc&x=2&y=3&x=4','x=([0-9]+)([a-z]+)',0) from default.dual; 
. 得到的结果为: . x=18abc 
. select regexp_extract('x=a3&x=18abc&x=2&y=3&x=4','x=([0-9]+)([a-z]+)',1) from default.dual; 
. 得到的结果为: . 18 
. select regexp_extract('x=a3&x=18abc&x=2&y=3&x=4','x=([0-9]+)([a-z]+)',2) from default.dual; 
得到的结果为:abc

. 语法: regexp_extract(string subject, string pattern, int index) 
. 返回值: string 
. 说明:将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。注意,在有些情况下要使用转义字符 
. 举例: 
. hive> select regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 1) from dual; 
. the 
. hive> select regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 2) from dual; 
. bar 
. hive> select regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 0) from dual; 
. foothebar

2. 替换语法: regexp_replace(string A, string B, string C) 
. 返回值: string 
. 说明:将字符串A中的符合Java正则表达式B的部分替换为C。注意,在有些情况下要使用转义字符 
. 举例: 
. hive> select regexp_replace(‘foobar’, ‘oo|ar’, ”) from dual; 
. fb


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69996462/viewspace-2762791/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: airflow性能优化
请登录后发表评论 登录
全部评论

注册时间:2021-03-15

  • 博文量
    8
  • 访问量
    7053